ASP.NET MVC 4 の StyleBundle を利用する際に気をつけたいことがあったのでメモします。
こんな感じでディレクトリとファイルを構成し、スタイルシートを用意した場合を見ていきます。
ファイル
├─Content ├─images │ └─picture.jpg └─site.css
スタイルシート(site.css)
.picture { background-image: url("images/picture.jpg"); }
この構成で次のようなバンドルを設定すると困ったことになります。
bundles.Add(new StyleBundle("~/Content/Site/css").Include( "~/Content/site.css"));
このバンドルで site.css が出力されるパスは "~/Content/Site/css" です。
背景に指定されている画像は相対パスで参照しているので、"/Content/Site/images/picture.jpg" というパスになってしまい、画像が参照できません。
このようにバンドル時のパスが実際のファイル構成と異なると、スタイルシートから相対パスで参照している画像などが読めなくなってしまうので注意が必要です。
実際のファイル構成と同じパスでバンドルしてあげる必要があります。
bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/site.css"));
また、違うパスにあるスタイルシートをまとめてバンドルするのも避けたほうがいいですね。
0 件のコメント:
コメントを投稿