web-dev-qa-db-ja.com

MVCヘルパー-画像ソースに@URLを使用していますか?

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

ありがとう!

20
dex3703

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

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

助けてくれたRick Anderson、Jon Galloway、Eilon Liptonに感謝します。

40
dex3703

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

_src="~/Images/trend_up.png"
_

CSSファイル内のそれらの画像への参照は、_~_-MVC4を認識しないかどうかを思い出してください。

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

4
DB Conner
    @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
Refky Wahib