Asp.net 团队设计的脚本管理器使得每个页面仅存在一个实例(HttpHandler),我找不到他们扩展像 ScriptManager.GetCurrent
这样的方法的有效原因。获取页面内的实例。为什么开发者不能这样做
if(ScriptManager == null)
{
throw new Exception("The Below ajax control requires ScriptManager in the page");
}
最佳答案
我相信是因为除了页面的代码隐藏文件之外可能还有其他地方可以访问实际的 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 在母版页上定义时,您的代码将无法在内容页或用户控件中运行。
关于c# - ScriptManager.GetCurrent 方法背后的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9297555/