20

真新しい ASP.NET MVC 4 Beta Web アプリケーションから、Rob Conery のVidPub.Web の例に合わせてフォルダーを再配置しています

具体的には、これは、コンテンツの最終的なディレクトリ構造が次のようになることを意味します

VidPub.Web
 | |
 - -公衆
    | |
    |---画像
          |--- *.png
    |---JavaScript
          |--- *.js
    |---スタイルシート
         |----テーマ
              |---ベース  
                  |--- 画像
                  |--- *.css
        |----site.css

ただし、次の行を変更すると _Layout.cshtml

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Content/css")" 
           rel="stylesheet" 
           type="text/css" />

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Content/themes/base/css")" 
           rel="stylesheet" 
           type="text/css" />

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
             "~/Scripts/js")"></script>

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Public/stylesheets/css")"
           rel="stylesheet" 
           type="text/css" />

<link href="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Public/stylesheets/themes/base/css")" 
           rel="stylesheet" 
           type="text/css" />

<script src="@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(
           "~/Public/javascripts/js")"></script>

結果のHTMLには何もありません。

<link rel="stylesheet" type="text/css" />
<link rel="stylesheet" type="text/css" />
<script></script>

新しい場所でファイルが取得されないのはなぜですか?

4

2 に答える 2

25

代わりApplication_StartGlobal.asax.cs使用BundleTable.Bundles.EnableDefaultBundles();BundleTable.Bundles.RegisterTemplateBundles();

のソースをRegisterTemplateBundles見ると、実際には特定の js および css ファイルのみを検索 (および追加) していることがわかります。EnableDefaultBundles一方、独自のバンドルを追加する場合とほとんど同じです。

于 2012-03-29T12:38:06.697 に答える
21

デフォルト以外のディレクトリを使用する場合は、独自のバンドルを登録する必要があるようです。以下を追加しApplication_Start、問題を修正しました

var bundle = new Bundle("~/Public/stylesheets/css", new CssMinify());
bundle.AddDirectory("~/Public/stylesheets", "*.css", true);
BundleTable.Bundles.Add(bundle);

bundle = new Bundle("~/Public/javascripts/js", new JsMinify());
bundle.AddDirectory("~/Public/javascripts", "*.js", true);
BundleTable.Bundles.Add(bundle);
于 2012-03-10T15:26:42.713 に答える