23

私はMVC3を使用しており、ステータスアプリケーション用にテキストとアイコンが入ったボックスを描画するシンプルなヘルパーがあります。スニペット:

@helper Tile(string ID)
 {
 <div class="front defaulttile"> 
    <div class="notifybar" id="NotifyBarID" >
    <img alt="" src="@Url.Content("~/Images/img.jpg")" style="display: inline; margin-right: 5px;" />
    <p class="topstatusbartext" id="NotifyBarTextID" >Status bar text</p>
    </div>
etc...

画像のsrcに@Url.Contentを使用すると便利ですが、使用できないというエラーが表示されます。これを使用するために追加または変更できるものはありますか?アプリがサーバー上にあると、パスを調整して問題が発生する必要はありません。

ありがとう!

4

3 に答える 3

42

誰かが私よりもよく質問したようです。これを見てください:

ASP.NET MVCで、C#コードからRazor @ Url.Content()ヘルパーを使用するにはどうすればよいですか?

次のように、MVCヘルパー内で@Hrefを使用することもできます。

src="@Href("../../Images/trend_up.png")" (whatever path is relative to the cshtml file)
-- or --
src="@Href("~/Images/trend_up.png")"

上記はMVC3用です。

MVC4では、次のすばらしいショートカットが表示されます(〜に注意してください)。

<img id="img1" src="~/Images/trend_up.png" />

助けてくれたRickAnderson、Jon Galloway、EilonLiptonに感謝します。

于 2012-05-18T21:07:26.380 に答える
4
    @helper Tile(string ID,UrlHelper url)
 {
 <div class="front defaulttile"> 
    <div class="notifybar" id="NotifyBarID" >
    <img alt="" src="@url.Content("~/Images/img.jpg")" style="display: inline; margin-right: 5px;" />
    <p class="topstatusbartext" id="NotifyBarTextID" >Status bar text</p>
    </div>
etc...
于 2013-02-06T01:08:46.337 に答える
4

MVC4では、回答に記載されているように、チルダを再び使用できるのは間違いなく楽しいです。

src="~/Images/trend_up.png"

CSSファイル内のこれらの画像への参照は--MVC4を認識しないことを覚えておいてください~

ただし、CSSURLの画像への相対参照と同じ問題ではありません。
たとえばbackground: url('../Images/menus/menu-left.png')、CSSファイルの場所を基準にします。したがって、CSSファイルを他のアプリケーションフォルダと比較して配置したままにすることができれば、問題ありません...

于 2013-07-01T20:37:50.037 に答える