asp.net - 强制 ASP.Net MVC Bundle 按特定顺序呈现 javascript 文件

标签 asp.net .net-4.0 asp.net-mvc-4 bundle bundling-and-minification

我正在开发一个 ASP.Net MVC 4 应用程序,并使用 Bundling 和 minifiction 来呈现样式和脚本文件。

我有一个脚本文件( 文件 A )在另一个文件( 文件 B )中调用函数,当我使用@Scripts.Render()它呈现的方法 link标签 文件 A 之前 文件 B 所以它会触发错误并且脚本无法正常工作。

有什么办法可以强制@Script.Render()渲染 link按特定顺序标记而不为每个文件使用单独的包????

编辑

我正在使用 IncludeDirectory包含该文件夹中所有脚本文件的方法

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/js").IncludeDirectory(
                    "~/Scripts/js",
                    "*.js"));
    }
}

最佳答案

默认情况下, bundle 将按字母顺序添加脚本。它将围绕已知库移动并以正确的顺序添加它们(例如,它将首先放入 jQuery,然后是 jQuery-ui)。

最简单的方法是自己订购脚本。一种方法是将您的自定义脚本移到不同的文件夹,然后按照您想要的顺序将所有脚本添加到它们自己的包中:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/js").IncludeDirectory(
                    "~/Scripts/js","*.js"));

        bundles.Add(new ScriptBundle("~/bundles/myScripts").Include(
            "~/Scripts/custom/scriptB.js",
            "~/Scripts/custom/scriptA.js"));
    }
}

另一种选择是通配符。此选项仍然包括将您的自定义脚本移动到它们自己的文件夹中,但只有一个包 ( source ):*
public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {       
        bundles.Add(new ScriptBundle("~/bundles/js").Include(
            "~/Scripts/*.js",
            "~/Scripts/custom/scriptB.js",
            "~/Scripts/custom/scriptA.js"));
    }
}

另外关于您的评论“是否有任何方法可以强制 @Script.Render() 以特定顺序呈现 link 标签,而无需为每个文件使用单独的包”——请注意,单独的链接标签仅在 Debug模式下发生。在 Release模式下部署后,将只有一个链接标签和一个文件。

关于asp.net - 强制 ASP.Net MVC Bundle 按特定顺序呈现 javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14563415/

相关文章:

.net - .net framework 4.5 向后兼容

c# - 在 ASP.NET MVC 4 中使用路由重定向

asp.net-mvc-4 - IdentityServer3 与 ServiceStack 和 MVC 客户端

asp.net - 防止多个用户在 Sharepoint 2010 中编辑同一个列表项

c# - 从ASP.NET调用的Python脚本在IIS Express中运行良好,但在本地IIS中失败

html - 使用 ASP 重复器创建一个 HTML 表格,水平重复

.net - 为什么 IStructuralEquatable 和 IStructuralComparable 不是通用的?

c# - .NET 4.0 中的代码契约,非空引用类型的粉丝们不高兴吗?

c# - Specflow 和 HttpSelfHostServer

c# - 如何处理 global.asax 中的 session 结束?