错误处理

在页面回传时如果发生了异常AsyncPostBackError事件将被触发,错误信息的处理依赖于AllowCustomErrors属性、AsyncPostBackErrorMessage属性和Web.config中的<customErrors>配置区。下面看一个简单的错误处理例子,在AsyncPostBackError事件中捕获到异常信息并设置AsyncPostBackErrorMessage属性。

<% @ Page Language="C#"  %>

< script  runat ="server" >

    protected 
void ErrorProcessClick_Handler(object sender, EventArgs e)

    
{
        
// This handler demonstrates an error condition. In this example

        
// the server error gets intercepted on the client and an alert is shown. 

        
throw new ArgumentException();
    }


    protected 
void SuccessProcessClick_Handler(object sender, EventArgs e)

    
{
        
// This handler demonstrates no server side exception.

        UpdatePanelMessage.Text 
= "The asynchronous postback completed successfully.";

    }


    protected 
void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)

    
{
        ScriptManager1.AsyncPostBackErrorMessage 
= "异常信息为:" + e.Exception.Message;

    }


</ script >


< html  xmlns ="http://www.w3.org/1999/xhtml" >

< head  id ="Head1"  runat ="server" >

    
< title > PageRequestManager endRequestEventArgs Example </ title >

    
< style  type ="text/css" >

    body 
{

        font-family
: Tahoma;

    
}


    #AlertDiv
{

    left
: 40%; top: 40%;

    position
: absolute; width: 200px;

    padding
: 12px; 

    border
: #000000 1px solid;

    background-color
: white; 

    text-align
: left;

    visibility
: hidden;

    z-index
: 99;

    
}


    #AlertButtons
{

    position
: absolute;

    right
: 5%;

    bottom
: 5%;

    
}


    
</ style >

</ head >

< body  id ="bodytag" >

    
< form  id ="form1"  runat ="server" >

        
< div >

            
< asp:ScriptManager  ID ="ScriptManager1"  runat ="server"  
            OnAsyncPostBackError
="ScriptManager1_AsyncPostBackError" >

            
</ asp:ScriptManager >
 
            
< script  type ="text/javascript"  language ="javascript" >

                
var divElem = 'AlertDiv';

                
var messageElem = 'AlertMessage';

                
var errorMessageAdditional = 'Please try again.';

                
var bodyTag = 'bodytag';
                Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);

                
function ToggleAlertDiv(visString)
                
{
                     
if (visString == 'hidden')

                     
{
                         $get(bodyTag).style.backgroundColor 
= 'white';                         
                     }

                     
else
                     
{
                         $get(bodyTag).style.backgroundColor 
= 'gray';                         

                     }


                     
var adiv = $get(divElem);

                     adiv.style.visibility 
= visString;

                }


                
function ClearErrorState() {

                     $get(messageElem).innerHTML 
= '';

                     ToggleAlertDiv('hidden');                     

                }

                
function EndRequestHandler(sender, args)

                
{
                   
if (args.get_error() != undefined && args.get_error().httpStatusCode == '500')
                   
{

                       
var errorMessage = args.get_error().message

                       args.set_errorHandled(
true);

                       ToggleAlertDiv('visible');

                       $get(messageElem).innerHTML 
= '"' + 

                                errorMessage + '
" ' + errorMessageAdditional;

                   }


                }


            
</ script >

            
< asp:UpdatePanel  runat ="Server"  UpdateMode ="Conditional"  ID ="UpdatePanel1" >

                
< ContentTemplate >

                    
< asp:Panel  ID ="Panel1"  runat ="server"  GroupingText ="Update Panel" >

                        
< asp:Label  ID ="UpdatePanelMessage"  runat ="server"   />

                        
< br  />

                        Last update:

                        
<% =  DateTime.Now.ToString()  %>

                        .

                        
< br  />

                        
< asp:Button  runat ="server"  ID ="Button1"  Text ="Submit Successful Async Postback"

                            OnClick
="SuccessProcessClick_Handler"  OnClientClick ="ClearErrorState()"   />

                        
< asp:Button  runat ="server"  ID ="Button2"  Text ="Submit Async Postback With Error"

                            OnClick
="ErrorProcessClick_Handler"  OnClientClick ="ClearErrorState()"   />

                        
< br  />

                    
</ asp:Panel >

                
</ ContentTemplate >

            
</ asp:UpdatePanel >

            
< div  id ="AlertDiv" >

                
< div  id ="AlertMessage" >

                
</ div >

                
< br  />

                
< div  id ="AlertButtons"   >

                    
< input  id ="OKButton"  type ="button"  value ="OK"  

                           runat
="server"  onclick ="ClearErrorState()"   />

                
</ div >

           
</ div >

    
</ form >

</ body >

</ html >

运行后时界面:

发生异常信息:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值