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了。

ASP.NET AJAX - ScriptManagerProxy因何而存在? /// <summary>
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// IScriptManager 接口
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// </summary>

ASP.NET AJAX - ScriptManagerProxy因何而存在? public   interface  IScriptManager
ASP.NET AJAX - ScriptManagerProxy因何而存在?
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?    Microsoft.Web.UI.ScriptManager ScriptManager 
get; }
ASP.NET AJAX - ScriptManagerProxy因何而存在?}

ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// <summary>
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// MasterPage 类实现借口
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// </summary>

ASP.NET AJAX - ScriptManagerProxy因何而存在? public  partial  class  MasterPage : System.Web.UI.MasterPage, IScriptManager
ASP.NET AJAX - ScriptManagerProxy因何而存在?
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
public Microsoft.Web.UI.ScriptManager ScriptManager
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?        
get
ASP.NET AJAX - ScriptManagerProxy因何而存在?        
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?            
return this.ScriptManager1;
ASP.NET AJAX - ScriptManagerProxy因何而存在?        }

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

ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
protected void Page_Load(object sender, EventArgs e)
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?        
ASP.NET AJAX - ScriptManagerProxy因何而存在?    }

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

ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// <summary>
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// 内容页通过借口访问MasterPage中的ScriptManager
ASP.NET AJAX - ScriptManagerProxy因何而存在?
/// </summary>

ASP.NET AJAX - ScriptManagerProxy因何而存在? public  partial  class  Default2 : System.Web.UI.Page
ASP.NET AJAX - ScriptManagerProxy因何而存在?
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
protected void Page_Load(object sender, EventArgs e)
ASP.NET AJAX - ScriptManagerProxy因何而存在?    
{
ASP.NET AJAX - ScriptManagerProxy因何而存在?        IScriptManager sm 
= this.Master as IScriptManager;
ASP.NET AJAX - ScriptManagerProxy因何而存在?        Microsoft.Web.UI.ServiceReference s 
= new Microsoft.Web.UI.ServiceReference();
ASP.NET AJAX - ScriptManagerProxy因何而存在?        s.Path 
= "WebService2.asmx";
ASP.NET AJAX - ScriptManagerProxy因何而存在?        sm.ScriptManager.Services.Add(s);
ASP.NET AJAX - ScriptManagerProxy因何而存在?    }

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

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

你可能感兴趣的:(asp.net)