ASP.NET AJAX - ScriptManagerProxy因何而存在?

本人初学AJAX,有错误还望指正:)

看本文前,前先了解http://www.cnblogs.com/liminzhang/archive/2006/11/21/567351.html

顾名思义,ScriptManagerProxy就是ScriptManager控件的代理者,因为一个页面只能有一个ScriptManager。

为什么一个页面只能有一个ScriptManager呢?我猜想是由于引用的公共JS的问题才作出这个限制的,被ScriptManager引入的公用JS其它ScriptManager就不必再被引用,从而产生一出一个ScriptManagerProxy,当然ScriptManagerProxy不可能仅仅因为这一点原因才被设计出来,还因为主版页面(Master Pages)与内容页面(Content Pages)的存在。

关于主版页面与内容页面使用不同的Service或JS,除了
http://www.cnblogs.com/liminzhang/archive/2006/11/21/567351.html 给出的方案外还可以通过给MasterPage增加一个ScriptManager的服务接口,这样内容页面就不需要再创建ScriptManagerProxy,而动态修改ScriptManager了。

ExpandedBlockStart.gif ContractedBlock.gif /**/ /// <summary>
InBlock.gif
/// IScriptManager 接口
ExpandedBlockEnd.gif
/// </summary>

None.gif public   interface  IScriptManager
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif    Microsoft.Web.UI.ScriptManager ScriptManager 
dot.gifget; }
ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ /// <summary>
InBlock.gif
/// MasterPage 类实现借口
ExpandedBlockEnd.gif
/// </summary>

None.gif public  partial  class  MasterPage : System.Web.UI.MasterPage, IScriptManager
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
public Microsoft.Web.UI.ScriptManager ScriptManager
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
get
ExpandedSubBlockStart.gifContractedSubBlock.gif        
dot.gif{
InBlock.gif            
return this.ScriptManager1;
ExpandedSubBlockEnd.gif        }

ExpandedSubBlockEnd.gif    }

InBlock.gif
InBlock.gif    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif
None.gif
None.gif
ExpandedBlockStart.gifContractedBlock.gif
/**/ /// <summary>
InBlock.gif
/// 内容页通过借口访问MasterPage中的ScriptManager
ExpandedBlockEnd.gif
/// </summary>

None.gif public  partial  class  Default2 : System.Web.UI.Page
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
protected void Page_Load(object sender, EventArgs e)
ExpandedSubBlockStart.gifContractedSubBlock.gif    
dot.gif{
InBlock.gif        IScriptManager sm 
= this.Master as IScriptManager;
InBlock.gif        Microsoft.Web.UI.ServiceReference s 
= new Microsoft.Web.UI.ServiceReference();
InBlock.gif        s.Path 
= "WebService2.asmx";
InBlock.gif        sm.ScriptManager.Services.Add(s);
ExpandedSubBlockEnd.gif    }

ExpandedBlockEnd.gif}

None.gif

转载于:https://www.cnblogs.com/netflu/archive/2006/11/21/567602.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值