Asp.Net Ajax (2)---ScriptManager

 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控件


评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值