2010-08-07 99 views
3

我在写一个包含自定义控件(不是用户控件)的自定义类库。 我有一些需要在页面上注册的嵌入式JavaScript文件。从自定义控件访问ToolKitScriptManager/ScriptManager

既然这是一个类库,我该如何检测是否使用ToolKitScriptManager或ScriptManager?

Page.ClientScript是一个ClientScriptManager,但是如果页面有新的ToolKitScriptManager,我该怎么办?

回答

2

您可以通过调用静态ScriptManager.GetCurrent()方法来确定您的控件正在实例化的页面是否使用ScriptManager。如果这返回null那么你可以假设(工作的基础上,您的控件将只在您的网站内使用),该网页正在使用ToolKitScriptManager而不是ScriptManager

+0

假设页面使用ToolKitScriptManager并且该方法返回null,那么找到ToolKitScriptManager的最有效方法是什么?循环浏览页面控件,直到找到它? – Matt 2010-08-07 23:36:59

+2

鉴于'ToolKitScriptManager'派生自'ScriptManager',我怀疑调用'ScriptManager.GetCurrent'将返回(对于包含ToolKitScriptManager的页面)对ToolKitScriptManager的引用(对于包含一个的页面,将其转换为ScriptManager)或者是对ScriptManager的引用,所以如果在页面上,你不应该返回'null'... – Rob 2010-08-08 00:02:24

+0

你的怀疑是正确的。我还注意到,我发现'ScriptManager'给了我'ToolScriptManager'实例。要使用你的代码,可能需要明确地使用这个名字空间(例如调用'System.Web.UI.ScriptManager.GetCurrent(this.Page);')。 – Brian 2014-06-17 13:54:59