2012-05-18 11 views
18

Sto utilizzando MVC3 e ho un semplice helper che disegna una casella con testo e icone all'interno per un'applicazione di stato. Un frammento:MVC helper - using @URL per image src?

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

Sarebbe ottimo da utilizzare @ Url.Content per lo src dell'immagine, ma ottengo un errore non è disponibile. C'è qualcosa che posso aggiungere o modificare per usarlo? Preferirei non dover manipolare i percorsi e avere un problema una volta che l'app è sul server.

Grazie!

risposta

35

Sembra che qualcuno abbia posto la domanda meglio di me. Guardate questo:

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

È inoltre possibile utilizzare @href all'interno di un Helper MVC troppo, in questo modo:

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

Quanto sopra sono per MVC3.

In MVC4, si ottiene questo bel collegamento (si noti la ~):

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

Grazie a Rick Anderson, Jon Galloway e Eilon Lipton per l'aiuto.

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

In MVC4, è sicuramente divertente per essere in grado di utilizzare di nuovo la tilde, come indicato nella risposta:

src="~/Images/trend_up.png" 

Basta rememeber che i riferimenti a quelle immagini nei file CSS non riconoscerà il ~ - MVC4 o no.

Tuttavia, non è lo stesso problema, come il riferimento relativo a un'immagine nell'URL CSS.
Ad esempio background: url('../Images/menus/menu-left.png') sarà relativo alla posizione del file CSS. Quindi, se riesci a far sì che il file CSS rimanga relativo ad altre cartelle dell'applicazione, stai bene ...

Problemi correlati