それが Web の最適化なのか、それとも WebGrease なのかはわかりませんが、どちらか (または両方) が非常にうるさいので、細心の注意を払う必要があります。
まず第一に、コードに問題はありません:
bundles.Add(new StyleBundle("~/content/css").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
実際、これはまさにマイクロソフトが行っていることです。CSS を使用しない主な理由~/bundles
は、画像の相対パスが台無しになることです。ブラウザがバンドルをどのように認識するかを考えてみてください。他の URL を認識するのとまったく同じ方法で、相対パスに関してはすべての通常のパス関連のルールが引き続き適用されます。CSS に への画像パスがあると想像してください../images/bullet.png
。ブラウザを使用している場合、実際には存在しない~/bundles
上のディレクトリを検索することになります。bundles
それはおそらく~/images
あなたがおそらく持っている場所を探すことになるでしょう~/content/images
。
実際にそれを壊して404エラーを引き起こす可能性のあるいくつかのことを見つけました:
- 参考までに: 私のディレクトリ構造には、CSS 画像用
Content/CSS
のフォルダーが含まれています。images
- テスト中
EnableOptimizations=true
にバンドルの使用を強制する必要があります
- 最初に行うべきことは「ソースを表示」で、css リンクをクリックするだけで機能するかどうかを確認できます。
たとえば、猫に関するサイトを開発しているとしましょう。あなたはこれを持っているかもしれません
@Styles.Render("~/Content/css/cats.css") // dont do this - see below why
bundles.Add(new StyleBundle("~/content/css/cats.css").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
これにより、HTML 内のこのパスへの CSS リンクが生成されます。
/Content/css/cats.css?v=JMoJspikowDah2auGQBfQAWj1OShXxqAlXxhv_ZFVfQ1
ただし、拡張子 .css を付けると IIS (と思われる) が混乱するため、これにより 404 が返されます。
これを次のように変更すると、正常に動作します。
@Styles.Render("~/Content/css/cats")
bundles.Add(new StyleBundle("~/content/css/cats").Include(
"~/content/css/reset.css",
"~/content/css/bla.css"));
他の人がすでに指摘しているもう 1 つの問題は、やってはいけないことです。
@Styles.Render("~/Content/css")
css
ディレクトリにcssディレクトリまたはファイルがある場合(拡張子なしで呼び出されるファイルがある可能性は低いです) Content
。
追加のトリックは、生成された HTML にバージョン番号があることを確認する必要があることです。
<link href="/Content/css/cats?v=6GDW6wAXIN5DJCxVtIkkxLGpojoP-tBQiKgBTQMSlWw1" rel="stylesheet"/>
そうでなく、このように見える場合は、バンドル テーブルと cshtml ファイルの間でバンドル名が完全に一致していない可能性があります。
<link href="/Content/css/cats" rel="stylesheet"/>