【问题标题】:JavaScript method call only be called once using ScriptManagerJavaScript 方法调用仅使用 ScriptManager 调用一次
【发布时间】:2017-04-03 23:05:26
【问题描述】:

我有一个 .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”会被忽略。谁能告知原因?谢谢!

【问题讨论】:

    标签: javascript c# jquery .net scriptmanager


    【解决方案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 - 脚本块的唯一标识符。

    【讨论】:

    • 我已将调用方法更改为: if (isExisting) { ScriptManager.RegisterClientScriptBlock(Page, GetType(), "setControlVisibility2", "updateControlPanelVisibility('1','" + itemTitle + "') ;“, 真的); } else { ScriptManager.RegisterClientScriptBlock(Page, GetType(), "setControlVisibility3", "updateControlPanelVisibility('0', '" + itemTitle + "');", true); } 对于 AAA,它仍然只运行一次。
    • 我将密钥添加为“脚本”+ Guid.NewGuid(),然后就可以了!谢谢!
    猜你喜欢
    • 2018-10-02
    • 2021-12-17
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-14
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    相关资源
    最近更新 更多