【问题标题】:ScriptControl WebResource Loading OrderScriptControl WebResource 加载顺序
【发布时间】:2012-11-02 01:56:04
【问题描述】:

我正在向具有一些 ASP.Net 控件的项目添加一个新控件。每个控件本质上都包含一个 .Net 类(继承 ScriptControl)和一个 javascript 文件。每个 js 文件都作为 WebResource 添加到程序集中

[assembly: WebResource("Assembly.Namespace.WidgetControl.js", "text/javascript")]
[assembly: WebResource("Assembly.Namespace.CogControl.js", "text/javascript")]

我想从其他控件之一的另一个 javascript 资源中的“类”继承,否则我需要从我想要继承的 js 类中复制/粘贴代码一些函数代码是丑陋,丑陋,丑陋的维修。我不喜欢重复的努力。

现在,我要的是 WebResource 加载顺序。假设,出于演示目的,我想从WidgetControl.js 中的类继承并用ThingaMahBobControl.js 扩展它。 Widget 后添加 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;
}

【问题讨论】:

    标签: javascript asp.net webforms asp.net-controls


    【解决方案1】:

    是的,这会起作用。如果在 GetScriptReferences 中您将指定您控制所需的脚本引用的完整集合,那么这将起作用。注意:脚本管理器根本不会添加重复的脚本引用。但这里的重点是您需要指定您的控件所依赖的脚本的完整集合。

    我还建议看看它在 Ajax Control Toolkit 中的实现方式(或者例如在 Telerik ASP.NET Ajax Controls 中使用相同的方法)。 现有的 ClientScriptResource 和 RequiredScript 属性和 ScriptObjectBuilder 帮助类有助于解决此类排序问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-16
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2016-09-27
      • 2012-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多