[普通]AJAX——ASP.NET AJAX框架(一)ScriptManager

作者(passion) 阅读(1191次) 评论(0) 分类( ASP.NET)

 前边我们针对以XMLHttpRequest为核心学习了AJAX的相关知识,接下来,重点学习一下微软在ASP.NET中的AJAX的框架的基础学习,主要是AJAX Extension中的几个控件,如下图:


    而,这篇博客,我们来重点看一下ScriptManager的学习。而我主要是通过他的属性来进行学习的。

 

         一,概述:ScriptManager控件包括在ASP.NET2.0以上版本的AJAXExtensions中,它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问WebService。所有需要支持ASP.Net AJAXASP.NET页面上有且只能有一个ScriptManager控件。

        如下():

  1. <span style="font-size:18px;"><asp:ScriptManager ID="ScriptManager1" runat="server">  
  2. </asp:ScriptManager>  
  3. </span>  


         简单理解就是每一个需要异步更新的页面,最开始都需要添加这个控件,保证异步更新的顺利完成。



         二,下边看一下它的几个常用属性:

  

属性或方法

说明

AllowCustomErrorsRedirect

该属性为布尔类型,默认值为true,表示在异步更新发生异常时是否使用Web.config<customErrors>节中的设定。Web.config<customErrors>节中可以指定应用程序级别的错误处理页面,这将通过重定向至某个专门显示异常的页面来实现

AsyncPostBackErrorMessage

该属性表示了异步回送过程中发生的异常将显示出的消息,我们可在ScriptManager的声明中设置这个属性

AsyncPostBackTimeout

异步回传时超时限制,默认值为90,单位为秒

AsyncPostBackError

异步回传发生异常时的服务端处理函数,在这里可以捕获信息并作相应的处理。

EnablePartialRendering

该属性可以使页面的某些控件或某个区域实现Ajax类型的异步回送和局部更新功能。若需要启用页面的局部更新模式,则应该将EnablePartialRendering属性设置为true,保持默认值即可

ScriptPath

设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性

ResolveScriptReference

指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。

ScriptMode

指定ScriptManager发送到客户端的脚本的模式,有四种模式:AutoInheritDebugRelease,默认值为Auto。具体如下表所示


     ScriptMode的属性值

属性值

说明

Auto

该属性值用于根据web.config配置中的retail配置节的值来决定脚本的模式。如果retail配置节的值为true,则把发布模式的脚本发送到客户端,反之则发送调试脚本

Debug

该属性值用于当retail配置节的值不为true时,则发送debug版本的客户端脚本

Release

该属性值用于当retail配置节的值不为false时,则发送Release版本的客户端脚本

Inherit

该属性值意义同Auto相同



        认真阅读上边的属性和方法,通过实践来了解,就非常容易了,这里我来写其中几个例子。

         1AllowCustomErrorsRedirect属性,当它设为true时就是利用我们web.config<customErrors>指向的错误页面,如果程序出现了错误,则直接跳转到指定的错误页面。我们来前代码:

        前台代码:

 

  1. <span style="font-size:18px;">    <form id="form1" runat="server">  
  2.         <%--错误页配置--%>  
  3.         <%--指定AllowCustomErrorsRedirect的属性为true --%>  
  4.         <asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="true">  
  5.         </asp:ScriptManager>  
  6.   
  7.         <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
  8.             <ContentTemplate>  
  9.                 <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />  
  10.             </ContentTemplate>  
  11.         </asp:UpdatePanel>  
  12.     </form>  
  13. </span>  

 


      后台C#代码:

  1. <span style="font-size:18px;">  protected void Button1_Click(object sender, EventArgs e)  
  2.     {  
  3.         throw new Exception("出现错误了");  
  4.     }  
  5. </span>  

      Web.config配置:
  1. <span style="font-size:18px;">    <!--错误页配置,本项目中提前设置好的错误页-->  
  2.     <customErrors mode="On" defaultRedirect="~/Error.aspx"></customErrors>  
  3. </span>  

          这样设置后当程序出现错误时,就会自动跳转到我们设置好的错误页上。

 

        2AsyncPostBackErrorMessageAsyncPostBackError这两个属性,主要是针对错误信息进行处理的。对应的方法为OnAsyncPostBackError(当发生异步通讯错误时)。看这个例子吧:

          前台代码:

  1. <span style="font-size:18px;">  <body>  
  2.         <form id="form1" runat="server">  
  3.       
  4.             <%--AllowCustomErrorsRedirect属性设置为false,配合后台的自定义错误使用--%>  
  5.             <asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="false" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">  
  6.             </asp:ScriptManager>  
  7.       
  8.             <asp:UpdatePanel ID="UpdatePanel1" runat="server">  
  9.                 <ContentTemplate>  
  10.                     <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />  
  11.                 </ContentTemplate>  
  12.             </asp:UpdatePanel>  
  13.               
  14.             <%--自定义错误处理--%>  
  15.             <div id="error"></div>  
  16.               
  17.             <script type="text/javascript" language="javascript">  
  18.                 Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, e)  
  19.                 {  
  20.                     e.set_errorHandled(true);  
  21.                     //将信息显示到上面的div区块中innerHTML,这里可以设置默认的错误信息  
  22.                     $get("error").innerHTML = "Sorry, an error has occurred: " + e.get_error().message;  
  23.                     setTimeout(function(){ $get("error").innerHTML = ""; }, 3000);//3秒后变为空  
  24.                 });  
  25.             </script>  
  26.         </form>  
  27.     </body>  
  28. </span>  

    后台代码:
  1. <span style="font-size:18px;">  protected void Button1_Click(object sender, EventArgs e)  
  2.         {  
  3.             //自定义错误处理,配合web.config文件中的错误配置节点customErrors(设置为on的时候才生效,同时还要制定错误页)和AllowCustomErrorsRedirect(是否允许customErrors)使用  
  4.             throw new Exception("错误信息提示!");  
  5.         }  
  6.         //异步刷新出现错误时,触发的事件  
  7.         protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)  
  8.         {  
  9.             //客户端接受到的错误的信息  
  10.             ScriptManager.GetCurrent(this).AsyncPostBackErrorMessage = e.Exception.Message;  
  11.         }  
  12. </span>  

     这样我们程序出错时,就出显示出错误信息!
« 上一篇:wifi共享上网(至尊版wifi)
« 下一篇:ASP.NET附加数据库文件的方式,如何发布到IIS7而不导致SQLServer出错
在这里写下您精彩的评论
  • 微信

  • QQ

  • 支付宝

返回首页
返回首页 img
返回顶部~
返回顶部 img