ScriptManager,Page,静态方法...如何在没有Page的情况下获取当前的ScriptManager?

时间:2011-01-14 21:25:51

标签: c# asp.net scriptmanager

我正在尝试扩展ScriptManager以简化处理具有多个资源文件的资源(例如,多个脚本文件以及css)。我的目标是,我可以向ScriptReference添加一个Scripts,并使其加载与该引用名称相关的多个资源。

我坚持的是,当使用不包含ScriptManager参数的静态方法时,您的基本Page如何知道如何处理这些内容?例如:

ScriptManager.ScriptResourceMapping.AddDefinition("someName", new
   ScriptResourceDefinition { Path="/script/somescript.js"});

这为(我猜)任何活动脚本管理器为您调用它时正在运行的页面添加了一个定义。但与旧学校方法不同,如RegisterClientScriptBlock,没有传递标识页面的参数。但是这些东西必须存储在ScriptManager对象中,不是吗?那怎么知道呢?

我可以随时获得对活动的引用:

ScriptManager.GetCurrent(page);

但理想情况下,我会创建与Microsoft完全相同的新方法。我无法弄清楚如何实现像

这样的东西
ScriptManager.ScriptResourceMapping.AddDefinition(string name,
    ScriptResourceDefinition definition,
    ResourceType type)

可以找出对象实例添加内容而无需添加Page参数。不知怎的,他们正在做......我怎么能?

1 个答案:

答案 0 :(得分:8)

即使在静态上下文中,您也可以通过(Page)(HttpContext.Current.Handler)获得页面引用。