你的位置:首页 > 软件开发 > ajax > ASP.NETAJAX入门系列(8):自定义异常处理

ASP.NETAJAX入门系列(8):自定义异常处理

发布时间:2008-10-23 21:55:00
在UpdatePanel控件异步更新时,如果有错误发生,默认情况下会弹出一个Alert对话框显示出错误信息,这对用户来说是不友好的,本文看一下如何在服务端和客户端脚本中自定义异常处理,翻译自官方文档。 主要内容1.在服务端自定义异常处理2.在客户端脚本中自定义异常处理 一.在服务端自定义异常处理1.添加ASPX页面并切换到设计视图。2.在工具箱中AJAX Extensions标签下双击Sc

在UpdatePanel控件异步更新时,如果有错误发生,默认情况下会弹出一个Alert对话框显示出错误信息,这对用户来说是不友好的,本文看一下如何在服务端和客户端脚本中自定义异常处理,翻译自官方文档。

 

主要内容

1.在服务端自定义异常处理

2.在客户端脚本中自定义异常处理

 

一.在服务端自定义异常处理

1.添加ASPX页面并切换到设计视图。

2.在工具箱中AJAX Extensions标签下双击ScriptManager和UpdatePanel控件添加到页面中。

3.在UpdatePanel控件中添加两个TextBox,一个Label,一个Button和一些文字,并设置Button的Text属性值为“Calculate”。

ASP.NETAJAX入门系列(8):自定义异常处理

4.双击Calculate按钮并添加如下代码到事件处理中。

ASP.NETAJAX入门系列(8):自定义异常处理protected void Button1_Click(object sender, EventArgs e)ASP.NETAJAX入门系列(8):自定义异常处理        int b = Int32.Parse(TextBox2.Text);ASP.NETAJAX入门系列(8):自定义异常处理        int res = a / b;ASP.NETAJAX入门系列(8):自定义异常处理        Label1.Text = res.ToString();ASP.NETAJAX入门系列(8):自定义异常处理    catch (Exception ex)ASP.NETAJAX入门系列(8):自定义异常处理                TextBox1.Text + " by " + TextBox2.Text + ".";ASP.NETAJAX入门系列(8):自定义异常处理        }ASP.NETAJAX入门系列(8):自定义异常处理            e.Exception.Message +ASP.NETAJAX入门系列(8):自定义异常处理            e.Exception.Data["ExtraInfo"].ToString();ASP.NETAJAX入门系列(8):自定义异常处理    }ASP.NETAJAX入门系列(8):自定义异常处理            "An unspecified error occurred.";ASP.NETAJAX入门系列(8):自定义异常处理    <div id="AlertMessage">ASP.NETAJAX入门系列(8):自定义异常处理    </div>ASP.NETAJAX入门系列(8):自定义异常处理    <br />ASP.NETAJAX入门系列(8):自定义异常处理    <div id="AlertButtons">ASP.NETAJAX入门系列(8):自定义异常处理        <input id="OKButton" type="button" value="OK" runat="server" onclick="ClearErrorState()" />ASP.NETAJAX入门系列(8):自定义异常处理    </div>ASP.NETAJAX入门系列(8):自定义异常处理</div>

3.在HEAD元素中添加如下样式标记。

ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理<style type="text/css">ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理    #UpdatePanel1 {ASP.NETAJAX入门系列(8):自定义异常处理}{ASP.NETAJAX入门系列(8):自定义异常处理      width: 200px; height: 50px;ASP.NETAJAX入门系列(8):自定义异常处理      border: solid 1px gray;ASP.NETAJAX入门系列(8):自定义异常处理    }ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理    #AlertDiv{ASP.NETAJAX入门系列(8):自定义异常处理}{ASP.NETAJAX入门系列(8):自定义异常处理    left: 40%; top: 40%;ASP.NETAJAX入门系列(8):自定义异常处理    position: absolute; width: 200px;ASP.NETAJAX入门系列(8):自定义异常处理    padding: 12px; ASP.NETAJAX入门系列(8):自定义异常处理    border: #000000 1px solid;ASP.NETAJAX入门系列(8):自定义异常处理    background-color: white; ASP.NETAJAX入门系列(8):自定义异常处理    text-align: left;ASP.NETAJAX入门系列(8):自定义异常处理    visibility: hidden;ASP.NETAJAX入门系列(8):自定义异常处理    z-index: 99;ASP.NETAJAX入门系列(8):自定义异常处理    }ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理    #AlertButtons{ASP.NETAJAX入门系列(8):自定义异常处理}{ASP.NETAJAX入门系列(8):自定义异常处理    position: absolute; right: 5%; bottom: 5%;ASP.NETAJAX入门系列(8):自定义异常处理    }ASP.NETAJAX入门系列(8):自定义异常处理</style>

4.切换到设计视图并确保你的页面如下所示。

ASP.NETAJAX入门系列(8):自定义异常处理

5.在属性窗口中的下拉列表中选择DOCUMENT元素(它对应的是页面<Body>元素),设置Id属性值为bodytag。

ASP.NETAJAX入门系列(8):自定义异常处理

6.切换到代码视图。

7.添加如下<script>代码块。

ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理<script type="text/javascript" language="javascript">ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理var divElem = 'AlertDiv';ASP.NETAJAX入门系列(8):自定义异常处理var messageElem = 'AlertMessage';ASP.NETAJAX入门系列(8):自定义异常处理var bodyTag = 'bodytag';ASP.NETAJAX入门系列(8):自定义异常处理Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);ASP.NETAJAX入门系列(8):自定义异常处理function ToggleAlertDiv(visString)ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理     if (visString == 'hidden')ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理     ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理         $get(bodyTag).style.backgroundColor = 'white';                         ASP.NETAJAX入门系列(8):自定义异常处理     }ASP.NETAJAX入门系列(8):自定义异常处理     elseASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理     ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理         $get(bodyTag).style.backgroundColor = 'gray';                         ASP.NETAJAX入门系列(8):自定义异常处理 ASP.NETAJAX入门系列(8):自定义异常处理     }ASP.NETAJAX入门系列(8):自定义异常处理     var adiv = $get(divElem);ASP.NETAJAX入门系列(8):自定义异常处理     adiv.style.visibility = visString;ASP.NETAJAX入门系列(8):自定义异常处理 ASP.NETAJAX入门系列(8):自定义异常处理}ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理function ClearErrorState() ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理     $get(messageElem).innerHTML = '';ASP.NETAJAX入门系列(8):自定义异常处理     ToggleAlertDiv('hidden');                     ASP.NETAJAX入门系列(8):自定义异常处理}ASP.NETAJAX入门系列(8):自定义异常处理function EndRequestHandler(sender, args)ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理   if (args.get_error() != undefined)ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理   ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理       var errorMessage;ASP.NETAJAX入门系列(8):自定义异常处理       if (args.get_response().get_statusCode() == '200')ASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理       ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理           errorMessage = args.get_error().message;ASP.NETAJAX入门系列(8):自定义异常处理       }ASP.NETAJAX入门系列(8):自定义异常处理       elseASP.NETAJAX入门系列(8):自定义异常处理ASP.NETAJAX入门系列(8):自定义异常处理       ASP.NETAJAX入门系列(8):自定义异常处理{ASP.NETAJAX入门系列(8):自定义异常处理           // Error occurred somewhere other than the server page.ASP.NETAJAX入门系列(8):自定义异常处理           errorMessage = 'An unspecified error occurred. ';ASP.NETAJAX入门系列(8):自定义异常处理       }ASP.NETAJAX入门系列(8):自定义异常处理       args.set_errorHandled(true);ASP.NETAJAX入门系列(8):自定义异常处理       ToggleAlertDiv('visible');ASP.NETAJAX入门系列(8):自定义异常处理       $get(messageElem).innerHTML = errorMessage;ASP.NETAJAX入门系列(8):自定义异常处理   }ASP.NETAJAX入门系列(8):自定义异常处理}ASP.NETAJAX入门系列(8):自定义异常处理</script>

在代码块中,主要做以下几件事:

1)定义PageRequestManager类的endRequest事件处理,在事件处理中,当有错误发生时将显示AlertDiv。

2)定义ToggleAlertDiv函数,当有错误发生时它用来显示或者隐藏AlertDiv元素,并且改变页面的背景颜色。

3)定义ClearErrorState函数,它用来隐藏错误信息的UI。

8.保存并按Ctrl + F5运行。

9.在每一个文本框中输入大于零的数,并单击Calculate按钮提交成功。

10.在第二个文本框中输入0,单击Calculate将会引发一个异常。这时自定义的AlertDiv将会显示出来代替了默认的Alert对话框,如下图所示:

ASP.NETAJAX入门系列(8):自定义异常处理

[翻译自官方文档]

作者:TerryLee

原标题:ASP.NETAJAX入门系列(8):自定义异常处理

关键词:ASP.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。