2012-05-18 4 views
18

Ich benutze MVC3 und habe einen einfachen Helfer, der eine Box mit etwas Text und Symbolen für eine Statusanwendung zeichnet. Ein Ausschnitt:MVC-Helfer - @ URL für Bildquelle verwenden?

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

Es wäre toll @ Url.Content für das Bild src zu verwenden, aber ich erhalte eine Fehlermeldung nicht verfügbar ist. Kann ich etwas hinzufügen oder ändern, um dies zu verwenden? Ich würde lieber nicht mit Pfaden jonglieren und ein Problem haben, sobald die App auf dem Server ist.

Danke!

Antwort

35

Sieht aus, als hätte jemand die Frage besser gestellt als ich. Schauen Sie sich diese:

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

Sie auch zu @href innerhalb einer MVC-Helper verwenden können, wie folgt aus:

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

Die oben genannten sind für MVC3.

In MVC4, erhalten Sie diese nette Abkürzung (die ~ bemerken):

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

Dank Rick Anderson, Jon Galloway und Eilon Lipton für die Hilfe.

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, es ist auf jeden Fall Spaß der Lage sein, die Tilde wieder zu verwenden, wie in der Antwort festgestellt:

src="~/Images/trend_up.png" 

rememeber Nur, dass Verweise auf diese Bilder in Ihren CSS-Dateien werden nicht die ~ erkennen - MVC4 oder nicht.

Es ist jedoch nicht das gleiche Problem, wie der relative Verweis auf ein Bild in der CSS-URL.
Zum Beispiel wird background: url('../Images/menus/menu-left.png') relativ zum Speicherort der CSS-Datei sein. Wenn Sie also die CSS-Datei relativ zu anderen Anwendungsordnern beibehalten können, ist es in Ordnung ...