2012-05-18 12 views
18

私はMVC3を使用しており、ステータスアプリケーションのためにいくつかのテキストとアイコンを含むボックスを描画する簡単なヘルパーを持っています。スニペット:MVCヘルパー - イメージsrcに@URLを使用していますか?

@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 @使用する素晴らしいことだが、私はそれが利用できないエラーが発生します。これを使用するために追加または変更できるものはありますか?私はむしろアプリをサーバー上に置いたら、パスをやりとりして問題を抱える必要はないだろう。

ありがとうございます!

答えて

35

誰かが私よりもよく質問したようです。これを見て:あなたは、あまりにもMVCヘルパー内@hrefを使用することができます

In ASP.NET MVC how can I use the Razor @Url.Content() helper from C# code?

、次のように:

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" /> 

感謝を。 MVC4で

2
@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... 
4

の回答で述べたように、それは、再びチルダを使用できるようにするには、間違いなく楽しいです:

src="~/Images/trend_up.png" 

はちょうどあなたのCSSファイルでそれらの画像への参照が~を認識しないことrememeber MVC4かどうか。

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

関連する問題