C# 在ASP.NET中设置和显示JavaScript警报消息的正确方法是什么?
我对在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,
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);
}
}
第一个问题:
您必须使用
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