JavaScript 方法调用只能使用 ScriptManager 调用一次
JavaScript method call only be called once using ScriptManager
我有一个 .net Web 窗体方法可以在一次调用中调用 JavaScript 方法(从用户控件),但只有第一次调用被触发。
后台代码为:
bool isAddOnsExisting = priceSummaryList.Any(x => x.ItemName == "AAA");
UcSummary.setPanelVisibility(isAddOnsExisting, "AAAPanel");
bool isControlExisting = priceSummaryList.Any(x => x.ItemName == "BBB");
UcSummary.setPanelVisibility(isControlExisting, "BBBPanel");
后端'UcSummary'的方法是:
public void setPanelVisibility(bool isExisting, string itemTitle)
{if (isExisting)
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('1','" + itemTitle + "');", true);}
else
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('0', '" + itemTitle + "');", true);}}
JavaScript方法是:
function updatePanelVisibility(isExisting, itemPanel)
{
var theItemPanel = "#" + itemPanel;
if (isExisting == '1') {
$(theItemPanel).fadeIn();
}
else {
$(theItemPanel).hide();
}
}
我发现只有 'AAA' 的第一个方法会被触发,但 'BBB' 被忽略了。谁能告诉我原因?谢谢!
我认为问题在于您为两个启动脚本使用了相同的 class 和名称,这导致一个覆盖另一个。
更多信息来自:https://msdn.microsoft.com/en-us/library/bb359558(v=vs.110).aspx
public static void RegisterStartupScript(
Control control,
Type type,
string key,
string script,
bool addScriptTags)
...
key - System.String - 脚本块的唯一标识符。
我有一个 .net Web 窗体方法可以在一次调用中调用 JavaScript 方法(从用户控件),但只有第一次调用被触发。 后台代码为:
bool isAddOnsExisting = priceSummaryList.Any(x => x.ItemName == "AAA");
UcSummary.setPanelVisibility(isAddOnsExisting, "AAAPanel");
bool isControlExisting = priceSummaryList.Any(x => x.ItemName == "BBB");
UcSummary.setPanelVisibility(isControlExisting, "BBBPanel");
后端'UcSummary'的方法是:
public void setPanelVisibility(bool isExisting, string itemTitle)
{if (isExisting)
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('1','" + itemTitle + "');", true);}
else
{ScriptManager.RegisterStartupScript(Page, GetType(),
"setVisibility","updatePanelVisibility('0', '" + itemTitle + "');", true);}}
JavaScript方法是:
function updatePanelVisibility(isExisting, itemPanel)
{
var theItemPanel = "#" + itemPanel;
if (isExisting == '1') {
$(theItemPanel).fadeIn();
}
else {
$(theItemPanel).hide();
}
}
我发现只有 'AAA' 的第一个方法会被触发,但 'BBB' 被忽略了。谁能告诉我原因?谢谢!
我认为问题在于您为两个启动脚本使用了相同的 class 和名称,这导致一个覆盖另一个。
更多信息来自:https://msdn.microsoft.com/en-us/library/bb359558(v=vs.110).aspx
public static void RegisterStartupScript(
Control control,
Type type,
string key,
string script,
bool addScriptTags)
...
key - System.String - 脚本块的唯一标识符。