Asp.net AJAX错误处理

 
在服务器代码中自定义错误处理
    通过设置 AsyncPostBackErrorMessage 属性和处理 ScriptManager 控件的 AsyncPostBackError 事件来自定义错误处理。

使用客户端脚本以自定义错误处理
    通过处理 PageRequestManager 类的 endRequest 事件来自定义错误处理。

示例代码
    ASPX
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AjaxTest._Default" %>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" >
  4. <head runat="server">
  5.     <title>Untitled Page</title>
  6.     <style type="text/css">
  7. #UpdatePanel1 {
  8.   width: 200px; height: 120px;
  9.   border: solid 1px gray;
  10. }
  11. #AlertDiv{
  12. left: 40%; top: 40%;
  13. position: absolute; width: 200px;
  14. padding: 12px; 
  15. border: #000000 1px solid;
  16. background-color: white; 
  17. text-align: left;
  18. visibility: hidden;
  19. z-index: 99;
  20. }
  21. #AlertButtons{
  22. position: absolute; right: 5%; bottom: 5%;
  23. }
  24. </style>
  25. </head>
  26. <body id="bodytag">
  27.     <form id="form1" runat="server">
  28.     <div>
  29.     
  30.         <asp:ScriptManager ID="ScriptManager1" runat="server" 
  31.             onasyncpostbackerror="ScriptManager1_AsyncPostBackError" >
  32.         </asp:ScriptManager>
  33.         自定义 ASP.NET UpdatePanel 控件的错误处理
  34.         <asp:UpdatePanel ID="UpdatePanel1" runat="server" >
  35.             <ContentTemplate>
  36.                 <asp:CheckBox ID="CheckBox1" Text="Throw Exception" runat="server" />
  37.                 <br />
  38.                 <asp:Button ID="Button1" runat="server" Text="Send" οnclick="Button1_Click" />
  39.                 <br />
  40.                 <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
  41.             </ContentTemplate>
  42.         </asp:UpdatePanel>
  43.     
  44.     </div>
  45.     
  46.     <div id="AlertDiv">
  47.         <div id="AlertMessage">
  48.         </div>
  49.         <br />
  50.         <div id="AlertButtons">
  51.             <input id="OKButton" type="button" value="OK" runat="server" οnclick="ClearErrorState()" />
  52.         </div>
  53.     </div>
  54.     </form>
  55. </body>
  56. </html>
  57. <script type="text/javascript" language="javascript">
  58. var divElem = 'AlertDiv';
  59. var messageElem = 'AlertMessage';
  60. var bodyTag = 'bodytag';
  61. Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
  62. function ToggleAlertDiv(visString)
  63. {
  64.      if (visString == 'hidden')
  65.      {
  66.          $get(bodyTag).style.backgroundColor = 'white';                         
  67.      }
  68.      else
  69.      {
  70.          $get(bodyTag).style.backgroundColor = 'gray';                         
  71.      }
  72.      var adiv = $get(divElem);
  73.      adiv.style.visibility = visString;
  74. }
  75. function ClearErrorState() {
  76.      $get(messageElem).innerHTML = '';
  77.      ToggleAlertDiv('hidden');                     
  78. }
  79. function EndRequestHandler(sender, args)
  80. {
  81.    if (args.get_error() != undefined)
  82.    {
  83.        var errorMessage;
  84.        if (args.get_response().get_statusCode() == '200')
  85.        {
  86.            errorMessage = args.get_error().message;
  87.        }
  88.        else
  89.        {
  90.            // Error occurred somewhere other than the server page.
  91.            errorMessage = 'An unspecified error occurred. ';
  92.        }
  93.        args.set_errorHandled(true);
  94.        ToggleAlertDiv('visible');
  95.        $get(messageElem).innerHTML = errorMessage;
  96.    }
  97. }
  98. </script>
     
    CS
  1. using System;
  2. using System.Collections;
  3. using System.Configuration;
  4. using System.Data;
  5. using System.Linq;
  6. using System.Web;
  7. using System.Web.Security;
  8. using System.Web.UI;
  9. using System.Web.UI.HtmlControls;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.WebControls.WebParts;
  12. using System.Xml.Linq;
  13. namespace AjaxTest
  14. {
  15.     public partial class _Default : System.Web.UI.Page
  16.     {
  17.         protected void Page_Load(object sender, EventArgs e)
  18.         {
  19.             if (!IsPostBack)
  20.             {
  21.                 ScriptManager.GetCurrent(this).RegisterAsyncPostBackControl(Button1);
  22.             }
  23.         }
  24.         protected void Button1_Click(object sender, EventArgs e)
  25.         {
  26.             Label1.Text = DateTime.Now.ToString();
  27.             if (CheckBox1.Checked)
  28.             {
  29.                 throw new ArgumentException("aa");
  30.             }
  31.         }
  32.         /// <summary>
  33.         /// 服务端处理异常事件
  34.         /// </summary>
  35.         /// <param name="sender"></param>
  36.         /// <param name="e"></param>
  37.         protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
  38.         {           
  39.            // e.Exception
  40.             ScriptManager1.AsyncPostBackErrorMessage = "You Handle Error";
  41.         }
  42.     }
  43. }
   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值