【问题标题】:Why is my ASP.net function executing only once?为什么我的 ASP.net 函数只执行一次?
【发布时间】:2022-11-20 02:00:25
【问题描述】:

我有以下功能(在 file.aspx.cs 中):

private void Alert(string message)
{
    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), 
        "alertMessage", $"alert('{message}')", true);
}

当我连续调用此函数两次或更多次时,屏幕上只会弹出第一个警报。 例如

protected void Button1_Click(object sender, EventArgs e)
{
    // button1 on click event
    Alert("First alert"); // this does show up on the screen
    Alert("Second alert"); // this does not show up
}

这是为什么?

【问题讨论】:

    标签: javascript c# asp.net


    【解决方案1】:

    您需要为这些脚本块提供不同的键,例如 alertMessage1alertMessage2。来自Microsoft docs

    客户端脚本由其密钥和类型唯一标识。具有相同键和类型的脚本被认为是重复的。该页面只能注册一个具有给定类型和密钥对的脚本。尝试注册已注册的脚本不会创建该脚本的副本。

    不过我不推荐这种编码风格。相反,我建议使用 API 端点并使用 JavaScript 而不是服务器端 C# 代码来驱动 UI。这很笨重。每次按下按钮都会导致整个页面重新加载和服务器端呈现,然后一个脚本块被插入到 HTML 代码中,这使得缓存变得不可能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-02
      • 1970-01-01
      • 2017-09-10
      • 2022-07-28
      相关资源
      最近更新 更多