Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET中设置和显示JavaScript警报消息的正确方法是什么?_C#_Javascript_Asp.net - Fatal编程技术网

C# 在ASP.NET中设置和显示JavaScript警报消息的正确方法是什么?

C# 在ASP.NET中设置和显示JavaScript警报消息的正确方法是什么?,c#,javascript,asp.net,C#,Javascript,Asp.net,我对在ASP.NET中使用JavaScript完全不熟悉,所以请容忍我 假设我有以下几点: protected void btnCreateReplication_Click(object sender, EventArgs e) { try { doSomething(); } catch (Exception ex) { //How do I display the error? I know if I were in WinForms,

我对在ASP.NET中使用JavaScript完全不熟悉,所以请容忍我

假设我有以下几点:

protected void btnCreateReplication_Click(object sender, EventArgs e)
{
   try
   {
      doSomething();
   }
   catch (Exception ex)
   {
      //How do I display the error? I know if I were in WinForms, I could just do this:
      MessageBox.Show(ex.Message); 
   }
}
第一个问题:

  • 我应该将所有JavaScript代码放在ASP.NET解决方案的.js文件中吗
  • 如果是这样,如何从.js文件调用警报消息
  • 如果不是,如何调用警报消息而不是MessageBox.Show

  • 您必须使用
    Page.ClientScript.RegisterClientScriptBlock
    方法

    string script = "alert('We had an error')";
    Page.ClientScript.RegisterClientScriptBlock(GetType(), 
        "myErrorKey", script, true);
    

    RegisterClientScriptBlock
    接受一个类型、一个查看脚本块是否已注册的键、一个脚本,以及一个指示方法是否应添加
    script
    标记的布尔值,或者,如果字符串脚本变量已经包含它们。

    则必须使用
    Page.ClientScript.RegisterClientScriptBlock
    方法

    string script = "alert('We had an error')";
    Page.ClientScript.RegisterClientScriptBlock(GetType(), 
        "myErrorKey", script, true);
    

    RegisterClientScriptBlock
    接受一个类型、一个查看脚本块是否已注册的键、脚本和一个布尔值,指示该方法是否应添加
    script
    标记,或者字符串脚本变量是否已包含它们。

    如Dave所说,使用tScript.RegisterClientScriptBlock方法,您可以将javascript注入页面并运行它

    如果您想使警报更复杂一点,使用StringBuilder设置脚本会更简洁


    这里,一个链接

    正如Dave所说,使用tScript.RegisterClientScriptBlock方法,您可以将javascript注入页面并使其运行

    如果您想使警报更复杂一点,使用StringBuilder设置脚本会更简洁


    这里,一个链接

    另一种显示JavaScript警报的有用方法是在.ASPX页面中使用
    OnClientClick
    。如果您熟悉ASP,这类似于为ASP Classic单击
    OnClick

    OnClientClick="alert('Are you sure you want to delete this user?');"
    


    这可能对上述代码没有帮助,但可用于显示其他简单警报。

    显示JavaScript警报的另一种有用方法是在.ASPX页面中使用
    OnClientClick
    。如果您熟悉ASP,这类似于为ASP Classic单击
    OnClick

    OnClientClick="alert('Are you sure you want to delete this user?');"
    


    这可能对上述代码没有帮助,但可用于显示其他简单警报。

    RegisterClient ScriptBlock的第二个参数采用一个
    键,该键是一个字符串。当您调用该方法时,它将检查该键以查看您的脚本是否已在页面上注册。如果不是,它将添加它,否则它将忽略它。我把它命名为“myErrorKey”,但你可以随便叫它什么。关键是要为您注册的每个脚本块使用不同的
    键。谢谢,Dave。谢谢你的帮助。我会接受你的回答,但我得等5分钟,我得走了。今天晚些时候我再打给你。谢谢!!:)
    RegisterClientScriptBlock
    的第二个参数采用一个
    键,它是一个字符串。当您调用该方法时,它将检查该键以查看您的脚本是否已在页面上注册。如果不是,它将添加它,否则它将忽略它。我把它命名为“myErrorKey”,但你可以随便叫它什么。关键是要为您注册的每个脚本块使用不同的
    键。谢谢,Dave。谢谢你的帮助。我会接受你的回答,但我得等5分钟,我得走了。今天晚些时候我再打给你。谢谢!!:)如果您的脚本很复杂,您可能应该在一个脚本文件中指定它,或者至少在标记中指定它,而不是在代码后面指定它。通常情况下,在代码隐藏中调用的javascript最好是非常短的,或者只是调用在其他更合适的介质中定义的函数。通常情况下,当您的脚本只有16行代码(随机低数,不是特定的)并且您需要将数据从c#传递到js变量时,这也是一种有效的方法。例如,在显示错误警报、显示无法从客户端轻松访问的错误信息时,将这些信息放在脚本块中相当简单,只需在需要时使用一个良好的函数来显示和设置数据。你的观点是正确的,如果它将是复杂的,有其他方法可以做到这一点,而不会使代码混乱。如果你的脚本将是复杂的,你可能应该在一个javscript文件中指定它,或者至少在标记中指定它,而不是在后面的代码中指定它。通常情况下,在代码隐藏中调用的javascript最好是非常短的,或者只是调用在其他更合适的介质中定义的函数。通常情况下,当您的脚本只有16行代码(随机低数,不是特定的)并且您需要将数据从c#传递到js变量时,这也是一种有效的方法。例如,在显示错误警报、显示无法从客户端轻松访问的错误信息时,将这些信息放在脚本块中相当简单,只需在需要时使用一个良好的函数来显示和设置数据。您的观点是正确的,如果它将是复杂的,那么还有其他方法可以做到这一点,而不会使后面的代码变得混乱。请注意,虽然这对于开发来说很好,但对于web范例中的生产环境来说,这样做并不是特别标准的。通常,您会将错误记录到某个日志文件中,然后将用户重定向到错误页面,或者只是在屏幕上的某个位置包含错误文本。由于它甚至不便于编码(winforms就是这样),所以很多人也没有使用它进行开发。请注意,虽然这对开发很好,但对于web范例中的生产环境来说,这样做并不是特别标准。通常,您会将错误记录到某个日志文件中,然后将用户重定向到错误页面,或者只包含错误文本som