MVC 4 Webサイトで発生する一般的な問題の1つは、cssバンドルがある場合のリリースとデバッグの違いです。それはあなたの場合である必要はありませんが、あなたには症状があります。
例を挙げて説明します。
次のようなバンドルがある場合:
var styles = new StyleBundle("~/Content/css").Include(
"~/Content/toastr.css",
"~/Content/flags/stylesheets/flags16.css",
"~/Content/flags/stylesheets/flags32.css",
"~/Content/Site.css")
そしてflags16.cssには次のものがあります。
background:url('flags/images/flags16.png');
でファイルを使用する~Content/flags/images/flags16.png
これはリリースモード(web.configのコンパイルdebug = "false")で機能します。これは、バンドル内のすべてのcssファイルが、正しいファイルを指す~/Content/css
相対パスでに配置された1つのファイルとして提供されるためです。'flags/images/flags16.png'
ただし、デバッグモードでは、ASP.NET MVCは縮小を無効にし@Styles.Render("~/Content/css")
ます。ビュー内で使用すると、バンドルに含まれるすべてのファイルへのリンクがレンダリングされるため、次のようになります。
<link href="/WorkOrders.Web/Content/flags/stylesheets/flags16.css" rel="stylesheet">
そして、そのパスから、画像への相対パスはOKではないため、flags16.pngの画像はレンダリングされません。
これを解決する1つの方法は、画像への参照を含む.cssファイルをバンドルが指している場所(この場合は〜/ Content)に移動する必要があるため、縮小して生で提供されるときに同じパスを持ちます。
更新アプリはmvc4ではなく、アプリがWebサイトのルートにない場合(つまり、localhost / myappにある場合)に問題が発生するため、写真への参照でパスを確認する必要があります。それらを絶対に参照した可能性があり('/somepath/mypic.png'
)、アプリがの場合localhost/MyApp
、パスは。である必要がありますlocalhost/MyApp/somepath/mypic.png
。@Url.Content(~/somepath/mypic.png)
cshtmlからパスを使用している場合は、パスをに置き換えることでこれを解決できます。パスがcssにある場合は、写真への相対パスを設定する必要があります。