c# - ScriptManager.GetCurrent 方法背后的原因

标签 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");
}

最佳答案

我相信是因为除了页面的代码隐藏文件之外可能还有其他地方可以访问实际的 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/

相关文章:

c# - 如何在加载时注册 Javascript

c# - 将显示名称设置为另一个属性的值 - MVC3 数据注释

html - 最小化 ul 以戏剧性的方式改变 li

python - 在类中的函数调用中传入 "self"作为参数 (Python)

c# - 如何解析这部分XML

c# - 如何在悬停时更改图像源?

c# - 尝试使用 Entity Framework 从数据库下载大文件时出错

jquery - 如何获取 JSON 键和值?

class - 类中PHP调用类返回错误:500

javascript - Node 类中的Memoizee实例方法