您的位置:首页 > 编程语言 > ASP

ASP.NET AJAX 中的ScriptManagerProxy

2010-05-29 15:26 501 查看
今天接触到一个概念:Asp.net Ajax 中的ScriptManagerProxy控件。因为框架规定了一个ASPX页面中只能用一个ScriptManager控件,而且要使用AJAX特性,一个页面必须至少有一个ScriptManager控件。但有时候如使用了MASTER页面的时候,就会出现MASTER页面中按需使用了ASP.NET AJAX特性,定义了一个ScriptManager控件,而CONTENT页面中也需要使用AJAX特性的时候,就可以在CONTENT页面中定义一个ScriptManagerProxy控件代替ScriptManager。

于是我先试了MASTER页面中定义ScriptManager控件,且使用UpdatePanel控件。然后同时CONTENT页面中也定义了ScriptManager控件,且也使用UpdatePanel控件。然后BUILD,成功了。但是运行时就报错了,说得也很直接,就是一个页面中不能同时有两个ScriptManager控件。于是我想既然MASTER页面中其实相当于直接引用吧,那它中有了,我CONTENT页面中就不需要定义它,直接用UpdatePanel不就结了。我一试,成功了!

然后我又试用了下前面提到的ScriptManagerProxy,也是成功的。

那不用ScriptManagerProxy与用了它,效果看来是一样的,那倒底有什么区别呢?图方便当然是不用省事,实质上肯定有用处。

查了一下,想了一下,差不多是因为如下的原因好像:

既然MASTER页是能用母版页,其中就不适合定义一些具体页面的特殊属性,具体到ScriptManager上来说,Content页中的AJAX应用可能需要指定一些特殊的web service,或者引用一些特殊的script,以及定义一些特殊的属性。这时候,每一个Content页都去MASTER页中添加是不现实,不合理的,因此,就需要在当前CONTENT页中进行定义。那么此时又不能违反一个页面中只能有一个SM(~~~)控件的原则,就只能通过SMP的方式来进行了。

当然,我想如果不需要特殊的跟母版页不能满足的定义的时候,就可以将SMP控件干脆省略了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐