【问题标题】:how to control the order of the css files rendering inside StyleBundle如何控制在 StyleBundle 中呈现的 css 文件的顺序
【发布时间】:2015-11-27 08:52:41
【问题描述】:

我的 asp.net mvc5 Web 应用程序中有以下 bunlde:-

bundles.Add(new StyleBundle("~/Content/css").Include(
                      "~/Content/bootstrap.css",
                      "~/Content/style.css",
                      "~/Content/touchTouch.css",
                      "~/fonts/font-awesome.css"));

现在这将始终在 bootstrap.css 之后呈现 style.css 吗?或者这不能保证?如果上面的代码不能保证顺序,那么我如何控制包中的 css 和脚本文件的顺序?

【问题讨论】:

    标签: css asp.net-mvc razor asp.net-mvc-5


    【解决方案1】:

    没有。我不会总是在bootstrap.css 之后渲染style.css

    如果你想订购,你必须让this(用于脚本)和this(用于CSS文件)更改以专门给它们订购。

    我知道这些链接是旧的(从 2012 年开始),但我已经在 ASP .NET MVC 5 中成功使用了它。

    【讨论】:

    • 但是您提供的链接是在 2012 年 8 月编写的,所以在 mvc 5.2 中仍然如此吗?
    • 现在不是编写新的 IbundleOrder 类,假设我明确地使用 .include 来一一包含 css 和脚本文件,如下所示 "Bundle canvasScripts = new ScriptBundle("~/bundles/scripts/ canvas") .Include("~/Scripts/modernizr-*") .Include("~/Scripts/Shared/achievements.js") .Include("~/Scripts/Shared/canvas.js"); bundles.Add (canvasScripts); "这样能保证订单吗?
    • 也不保证不同捆绑包的顺序。但是,如果不同的包之间存在依赖关系,这是否意味着它们应该在同一个包中?通常,不同的捆绑包不相互依赖。除非它们是像 JQuery 这样的外部参考库。
    • 但此链接stackoverflow.com/questions/11979718/… 中接受的答案是在每个脚本文件中一一明确地使用 .Include,他们说,当使用 .Include 明确时,顺序将按照内部定义ScriptBundle ...这是正确的还是我没有正确理解这一点..?
    • 哦,是的,你是对的!我以为我们在谈论渲染多个捆绑包。
    【解决方案2】:

    ASP.NET MVC 对某些文件有默认顺序。例如,它首先尝试加载 jQuery。您可以通过以下方式清除该列表:

    bundles.FileSetOrderList.Clear();
    

    这对我有用。如果它不适合您,您可以明确指出在您的包中处理文件的顺序:

    bundles.FileSetOrderList.Clear();
    BundleFileSetOrdering ordering = new BundleFileSetOrdering("custom order");
    ordering.Files.Add("jquery.js");
    bundles.FileSetOrderList.Add(ordering);
    

    【讨论】:

      猜你喜欢
      • 2013-01-24
      • 2019-11-02
      • 2012-07-24
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 2013-05-16
      • 2010-10-19
      • 2019-12-20
      相关资源
      最近更新 更多