1

如何在 ASP.net4.0 中使用 try & catch 块显示代码中出现的错误消息(弹出窗口)?

4

3 回答 3

3

这是一个 C# 版本。创建一个在页面中显示弹出窗口的函数

<script type="text/javascript">
function displayPopup(message)
{
   //code to display popup here
}
</script>

使用从代码隐藏生成的脚本调用此方法

try
{
   //your code here
}
catch(Exception ex)
{
 string script = "<script type=\"text/javascript\"> displayPopup('"+ex.Message+"'); </script>";
 ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script);
}

VB

Try
   'Your code here
Catch ex As Exception
    Dim script As String = "<script type=""text/javascript""> displayPopup('" & ex.Message & "'); </script>"
    ClientScript.RegisterClientScriptBlock(Me.[GetType](), "myscript", script)
End Try
于 2012-09-20T06:11:45.000 回答
0

你不能直接做

因为

1)当您的页面未呈现时,代码后面的错误出现在服务器端错误。2) Asp.Net 作为一个断开连接的模型工作,因此它首先在服务器端构建页面然后渲染。如果我们想显示客户端(javascript)的弹出窗口,我们可以在服务器端编写事件以在使用 javascript 方法在客户端渲染和加载页面时显示弹出窗口。

因此,您必须在服务器端发生错误时生成脚本,并将其注册到客户端脚本,例如

 string script = "<script type=\"text/javascript\"> window.alert('"+ex.Message+"'); </script>";
 ClientScript.RegisterClientScriptBlock(this.GetType(), "alertscript", script);

RegisterClientScriptBlock 将直接在页面上编写脚本,以便在渲染时执行这些脚本,您可以看到错误警报。

您可以编写自定义 javascript 函数并在脚本中调用该函数而不是警报来显示自定义弹出窗口。

于 2012-09-20T07:06:32.357 回答
0

你可以这样做

catch (Exception ex)
    {
        string message = string.Format("Message: {0}\\n\\n", ex.Message);
        message += string.Format("StackTrace: {0}\\n\\n", ex.StackTrace.Replace(Environment.NewLine, string.Empty));
        message += string.Format("Source: {0}\\n\\n", ex.Source.Replace(Environment.NewLine, string.Empty));
        message += string.Format("TargetSite: {0}", ex.TargetSite.ToString().Replace(Environment.NewLine, string.Empty));
        ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert(\"" + message + "\");", true);
    }
于 2016-08-30T12:18:24.403 回答