Asp.Net Ajax (2)---ScriptManager

来源:互联网 发布:windows安装器怎么用 编辑:程序博客网 时间:2024/05/22 08:11
 Asp.Net Ajax编程时,首先就得托一个ScriptManager,尽管不对它做任何操作。添加后就能正确运行,不添加就提示有错。具体为什么呢?本文就ScriptManager控件做详细介绍。


为什么要用ScriptManager

 ScriptManager控件会向页面注册Microsoft Ajax library的脚本。使客户端脚本能够使用类型系统扩展并支持部分页呈现和Web服务调用这样的功能。  
 这也就是尽管控件不做任何操作,还需把它引过来。
   <asp:ScriptManager ID="ScriptManager1" runat="server">   </asp:ScriptManager>

 ScriptManager使用技巧

1,指定错误处理

  1),出错跳转到指定页面

<form id="form1" runat="server">          <asp:ScriptManager ID="ScriptManager2" runat="server" AllowCustomErrorsRedirect="true" >     </asp:ScriptManager>     <asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></ContentTemplate>     </asp:UpdatePanel></form>

protected void Button1_Click(object sender, EventArgs e) {        throw new Exception(); }

web.config

<system.web><compilation debug="false" targetFramework="4.0"/><customErrors mode="On" defaultRedirect="Error.aspx"></customErrors></system.web>

说明:

 在异步处理中发生错误,想要跳转到指定的页面时,只需修改AllowCustomErrorsRedirect属性值,且跳转页面是在.config文件中定义的。


  2),捕获错误
<asp:ScriptManager ID="ScriptManager1" runat="server" AllowCustomErrorsRedirect="false" OnAsyncPostBackError="ScriptManager1_AsyncPostBackError"></asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server"><ContentTemplate><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /></ContentTemplate></asp:UpdatePanel><script type="text/javascript" language="javascript">Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(sender, e){e.set_errorHandled(true);$get("error").innerHTML =  e.get_error().message;});</script>
protected void Button1_Click(object sender, EventArgs e){throw new Exception("Error!");}protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e){ScriptManager.GetCurrent(this).AsyncPostBackErrorMessage = e.Exception.Message;}


说明:
 AsyncPostBackErrorMessage属相设置发送到浏览器的消息提示。如上实例,在浏览器页面就能显示错误的信息。


2,弹出框

如果使用了ScriptManager和UpdatePanel控件,则以往的弹出框Reseponse.Write()就不管用了。那么如果想要弹出提示框该怎么办?,既然微软能把Ajax技术封装成了控件,那么相关的信息肯定都在控件中能够找到。ScriptManager就能解决弹出框的问题。
protected void Button1_Click(object sender, EventArgs e){    ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "UpdatePanel1", "alert(1)", true);    ScriptManager.RegisterClientScriptBlock(this.UpdatePanel1, this.GetType(), "UpdatePanel1", "alert(2)", true);}


说明:
1,上面两个代码都能弹出提示框。RegisterStartupScript属相为控件UpdatePanel注册一个启动脚本块,并将该脚本添加到页面中;RegisterClientScriptBlock属性在<form>开始标记之后呈现一个Script该脚本被指定为字符串参数。
2,区别:由于RegisterClientScriptBlock属性是在<form>标记开始之后使用的,由程序执行顺序可知RegisterClientScriptBlock设置的弹出框内容肯定显示在RegisterStartupScript设置的弹出框之前。

总结

ScriptManager是Asp.Net的服务器控件。管理客户端组件、局部页刷新等功能,在使用其他Ajax Extension控件前首先要添加ScriptManger控件


原创粉丝点击