我正在向一个具有一些ASP.Net控件的项目中添加一个新控件。每个控件本质上由一个.Net类(继承ScriptControl)和一个javascript文件组成。每个js文件都作为WebResource添加到程序集中。
[assembly: WebResource("Assembly.Namespace.WidgetControl.js", "text/javascript")]
[assembly: WebResource("Assembly.Namespace.CogControl.js", "text/javascript")]我想从另一个javascript资源中的一个" class“继承其他控件,因为否则我就需要从js类中复制/粘贴一些函数代码,因为我想从这个js类中继承一些难看的、难看的、难看的维护代码。我不喜欢重复的工作。
现在,我所追求的是WebResource加载顺序。假设,出于演示的目的,我想继承WidgetControl.js中的类并用ThingaMahBobControl.js扩展它。在窗口小部件之后添加ThingaMahBob的WebResource程序集引用能保证加载顺序吗?
我不能继承还没有加载的东西,所以这是至关重要的。因为控件继承了抽象的ScriptControl,所以它必须实现GetScriptReferences(),所以以期望的顺序返回引用的可枚举集合是否有效?即:
protected override IEnumerable<ScriptReference> GetScriptReferences()
{
List<ScriptReference> refs = new List<ScriptReference>();
refs.Add(new ScriptReference("Assembly.Namespace.WidgetControl.js", this.GetType().Assembly.FullName));
refs.Add(new ScriptReference("Assembly.Namespace.ThingaMahBobControl.js", this.GetType().Assembly.FullName));
return refs;
}发布于 2012-11-14 03:20:31
是的,这将会起作用。如果在GetScriptReferences中,您将指定控件所需的脚本引用的完整集合,那么这将会起作用。注意:脚本管理器不会添加重复的脚本引用。但这里的要点是,您需要指定您的控件所依赖的脚本的完整集合。
我还建议研究一下它在Ajax控件工具包中的实现方式(例如,在Telerik ASP.NET Ajax控件中也使用了同样的方法)。存在现有的ClientScriptResource和RequiredScript属性以及帮助解决此类排序问题的ScriptObjectBuilder帮助器类。
https://stackoverflow.com/questions/13364109
复制相似问题