asp.net mvc 4捆绑包和显式文件包含

时间:2013-03-25 13:01:08

标签: css asp.net-mvc-4 bundle

我很困惑,我刚刚开始为我的ASP.NET MVC4网站开发CSS,但我并不完全了解正在发生的事情。

目前我的移动布局有效,但对它的任何更改都会导致一个又一个奇怪的效果。 (例如,不断显示未显示给ajax-loader.gif的表格。)

我在.Layout.Mobile.cshtml

中有以下内容
   @Styles.Render("~/Content/Mobile/css", "~/Content/jquerymobile/css")  
    <link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile-1.2.0.min.css" /> 
    <link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile-1.2.0.css" /> 
    <link rel="stylesheet" href="~/Content/Mobile/css/jquery.mobile.theme-1.2.0.css" /> 


    @Scripts.Render("~/bundles/jquery", "~/bundles/jquerymobile") 
    <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/latest/jquery.mobile.min.js"></script>

我修改了App_start中的BundleMobileConfig.cs,如下所示:

 //       bundles.Add(new StyleBundle("~/Content/Mobile/css")
 //           .Include("~/Content/Site.Mobile.css"));
 //kludge is the above wrong...and the following needed??
         bundles.Add(new StyleBundle("~/Content/Mobile/css")
            .Include("~/Content/Site.Mobile.css",
                     "~/Content/Mobile/css/"));

我不明白为什么这不是这个捆绑的默认值?

以下是我的问题:

  1. 如果您要注意样式表,我不需要包含三个显式链接,它们应该来自捆绑包。但如果删除其中任何一个,网站就会中断。

    • 为什么修改后的~/Content/Mobile/css捆绑包不会提取这些css文件?
  2. 对于脚本文件,我查看了code.jquery.com,我不明白为什么需要这些。我的本地代码是最新的(即jquery-1.9.1.js和jquery.mobile-1.2.0.js

    • 我希望版本1.9.1能够在没有版本的情况下替换1.7.1     问题,但它没有

    • jquery.mobile.min.js应该只在发布和调试之间切换    vesion,这不应该引起问题,但确实如此。

  3. 我使用了firebug来查看正在加载的文件,当我使用时,我看到了 没有明确包含的包的渲染我没有包含文件,为什么不呢?我已阅读有关捆绑包的内容,似乎我应该只获取捆绑的文件。

    任何人都可以了解正在发生的事情并指出我的教程,以便我可以学习 如何使用如何调试CSS和bundle。我读过几本,我发现了萤火虫 很有用,但我不知道接下来要去哪里看。

2 个答案:

答案 0 :(得分:2)

尝试用此替换您的捆绑代码。

bundles.Add(new StyleBundle("~/Content/Mobile/css")
        .Include("~/Content/Site.Mobile.css",
                 "~/Content/Mobile/jquery.mobile*"));

这应该加载你的文件而不是明确地这样做。

答案 1 :(得分:0)

你的权利确实有效!感谢....

奇怪的是,以下情况不起作用:

bundles.Add(new StyleBundle("~/Content/Mobile/css")
    .Include("~/Content/Site.Mobile.css",
             "~/Content/Mobile/css/jquery.mobile-{version}.js",
             "~/Content/Mobile/css/jquery.mobile.theme-{version}.js",
             "~/Content/Mobile/css/jquery.mobile.structure-{version}.js",
             "~/Content/Mobile/css/"));

我明白为什么你的例子有效......但是不明白我的为什么不...除非版本标签不像我期望的那样工作......

另外我发现jquery 1.9.1与1.7.1有很大的不同,我必须做到以下几点:

@Scripts.Render("~/bundles/jquery")  
@Scripts.Render("~/bundles/jquerymobile")  
<script src="~/Scripts/jquery-1.9.1.js"></script>
<script src="~/Scripts/jquery-migrate-1.1.1.js"></script> 
<script src="~/Scripts/jquery.mobile-1.2.0.js"></script>

这是有效的....使用你的例子,我将找出一个外卡模式,也包括这个。