2012-05-18 29 views
18

Estoy utilizando MVC3 y tengo un ayudante simple que dibuja una caja con texto e íconos dentro para una aplicación de estado. Un fragmento:MVC helper: ¿usa @URL para src de imagen?

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

Sería muy bueno para usar @ Url.Content para la imagen src, pero me da un error que no está disponible. ¿Hay algo que pueda agregar o cambiar para usar esto? Preferiría no tener que hacer malabares con las rutas y tener un problema una vez que la aplicación esté en el servidor.

Gracias!

Respuesta

35

Parece que alguien hizo la pregunta mejor que yo. Mira esto:

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

También puede utilizar @Href dentro de un ayudante MVC también, como esto:

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

Los anteriores son para MVC3.

En MVC4, se obtiene este buen atajo (nótese el ~):

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

Gracias a Rick Anderson, Jon Galloway y Eilon Lipton por la ayuda.

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

En MVC4, sin duda es divertido ser capaz de utilizar la tilde de nuevo, como se señala en la respuesta:

src="~/Images/trend_up.png" 

Sólo rememeber que las referencias a esas imágenes en sus archivos CSS no reconocerán la ~ - MVC4 o no.

No es el mismo problema, sin embargo, como la referencia relativa a una imagen en URL de CSS.
Por ejemplo background: url('../Images/menus/menu-left.png') será relativo a la ubicación del archivo CSS. Entonces, si puede lograr que el archivo CSS permanezca en relación con otras carpetas de aplicaciones, está bien ...

Cuestiones relacionadas