ScriptManager.GetCurrent方法背后的原因

时间:2012-02-15 16:50:57

标签: c# asp.net class asp.net-ajax scriptmanager

Asp.net团队设计了脚本管理器,每页只存在一个实例(HttpHandler),我找不到他们扩展像ScriptManager.GetCurrent这样的方法来获取实例的正当理由页面。为什么开发人员无法做到

if(ScriptManager == null)
{
    throw new Exception("The Below ajax control requires ScriptManager in the page");
}

1 个答案:

答案 0 :(得分:2)

我相信因为页面后面的代码可能还有其他地方可以访问实际的ScriptManager。使用静态方法GetCurrent(),您可以从代码中的任何位置(例如,从类库)访问当前上下文的ScriptManager。 GetCurrent的实现如下所示:

public static ScriptManager GetCurrent(Page page)
{
    if (page == null)
    {
        throw new ArgumentNullException("page");
    }
    return page.Items[typeof(ScriptManager)] as ScriptManager;
}

因此,它只是访问ScriptManager实例的快捷方式。

在母版页上定义ScriptManager时,您的代码无法在内容页面或用户控件中运行。