JavaScript方法调用只能使用ScriptManager

时间:2017-04-03 23:05:27

标签: javascript c# jquery .net 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'。谁能告诉原因?谢谢!

1 个答案:

答案 0 :(得分:1)

我认为问题在于你为两个启动脚本使用了相同的类和名称,这会导致一个覆盖另一个。

来自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 - 脚本块的唯一标识符。