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

/// <summary>
/// IScriptManager 接口
/// </summary>

public interface IScriptManager
{
    Microsoft.Web.UI.ScriptManager ScriptManager 
get; }
}




/// <summary>
/// MasterPage 类实现借口
/// </summary>

public partial class MasterPage : System.Web.UI.MasterPage, IScriptManager
{
    
public Microsoft.Web.UI.ScriptManager ScriptManager
    
{
        
get
        
{
            
return this.ScriptManager1;
        }

    }


    
protected void Page_Load(object sender, EventArgs e)
    
{
        
    }

}




/// <summary>
/// 内容页通过借口访问MasterPage中的ScriptManager
/// </summary>

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

}

posted @   蛤蟆  阅读(635)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示