javascript - ScriptControl WebResource加载顺序

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

我正在向具有一些 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;
}

最佳答案

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

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

关于javascript - ScriptControl WebResource加载顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13364109/

相关文章:

javascript - jQuery连续ajax调用

javascript - Bootstrap : insert dynamically a row in tab

c# - 消息框 asp.net c#

c# - TextBox 中的 ASP.net 简写

c# - 方法名称的预定义宏

javascript - 改变js中函数变量的类型

php - 如何将多行字符串传递给 javascript 函数?

javascript - Asp.net MVC使用ajax更新网页15秒后无需重新加载页面

javascript - SignalR 为所有客户端调用 asp.net 方法?

css - Bootstrap Glyphicon 与文本框对齐