2013-03-15 8 views
15

ich Bilder in einer Razor Ansicht mit string.Format so ...mit string.Format in MVC Razor sehen Seite

eindeutig falsch machen, will
foreach (var p in @Model.Photos) 
{       
    string.Format("<img src='{0}' width='100' alt='{1}' />", p.Path, 
           p.AlternateText);      
} 

Etwas hier ist, weil auf dieser Seite Rendering, ich habe habe nichts in diesem Abschnitt.

Antwort

25

string.Format() gibt eine Zeichenfolge zurück, die Sie verwerfen.

Sie müssen die Zeichenfolge auf die Seite drucken:

@string.Format(...) 

Beachten Sie, dass da dies keine Aussage, da kein ; sein sollte.

Beachten Sie auch, dass es besser wäre, Razor selbst zu verwenden:

<img src="@p.Path" width="100" alt="@p.AlternateText" /> 
10

ich einfach nur das tun um dieses Problem zu umgehen:

@model UXLab.Areas.SectionArea.ViewModels.SectionViewModel 
<section> 
    <header>@Model.Title</header> 
    <p> 
     @{var contentBuilder = new System.Text.StringBuilder(); } 
     @foreach (var link in Model.Links) 
     { 
      contentBuilder.append(Html.ActionLink(link.LinkText, link.Action, 
                link.Controller)); 
     } 
     @Html.Raw(contentBuilder.ToString()) 
    </p> 
</section> 

In diesem Beispiel habe ich Schleife durch einige Links Ich möchte die Seite anzeigen, die in einem ViewModel gespeichert sind.

Um die Links auf der Seite angezeigt werden, ich Schleife durch sie alle, sie zu einem StringBuilder anhängt, dann Html.Raw verwenden, um die rohe Html anzuzeigen, wenn Sie nicht Raw verwenden Sie dann werden Sie nicht erhalten Angebote und Dinge bis zur Seite Beispiel:

1: @String.Format("\"Hello {0}\"", Model.Name) 

2: @Html.Raw(String.Format("\"Hello {0}\"", Model.Name)) 

Linie 1 wird angezeigt &#34; Hello &#34; Melman
Linie 2 "Hello Melman"

Nur ein paar Sachen anzeigt habe ich herausgefunden habe, wenn sie mit heraus spielen auf die Seite setzen. Die Grundidee ist, dass Sie die Seite html erstellen und dann anzeigen. So ein Geschäft, wie Sie Methode gehen, sobald Sie die HTML-Ausgabe fertig zu manipulieren, zeigen Sie dann mit ihm @ outsite jeder {}

+0

+1 für '@ Html.Raw'. –

12

Es stimmt mit string.Format in Razor schmerzhaft ist, aber Sie zu tun haben einen Html.FormatValue, hier ist wie man es benutzt:

@Html.FormatValue("value", "format") 

die Signatur der Methode ist:

FormatValue(object value, string format) 
1

ich hatte das gleiche Problem, und ich habe es wie diese mit Url.C getan ontent und string.Format:

<img src="@Url.Content(string.Format("~/Content/img/{0}", Resources.MyImage))" />