Asp.net团队设计了脚本管理器,每页只存在一个实例(HttpHandler),我找不到他们扩展像ScriptManager.GetCurrent
这样的方法来获取实例的正当理由页面。为什么开发人员无法做到
if(ScriptManager == null)
{
throw new Exception("The Below ajax control requires ScriptManager in the page");
}
答案 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时,您的代码无法在内容页面或用户控件中运行。