2016-05-10 3 views
1

Ich bin neu zu Rasierer und Display-Vorlagen, also bitte korrigieren Sie mich, wo ich falsch liege. Ich arbeite mit einer Zeichenfolge, die HTML enthält. Wenn ich converting it directly to a HtmlString versuche, weigert sich mein Ajax-Formular zu übermitteln. Ich habe versucht, Display-Vorlagen mit dem Ziel, eine so etwas wie diesesWie Razor Display-Vorlage verwenden, um Zeichenfolge in HTML-String zu konvertieren

Meine @foreach Schleife enthält diese

@Html.DisplayFor(modelItem => myModel.myString, "HtmlString") 

Meine DisplayTemplate enthält dieses

HtmlString.cshtml

@model String 

@{ 
    new HtmlString(@Model); 
} 
Als Abhilfe zu verwenden,

Also, wenn myString = "<ul><li>my text</li></ul>"

Ich würde meine Ajax-Form wie

  • meinen Text

anzuzeigen Was ich jetzt nicht arbeiten und nichts zurückgibt. Bitte helfen Sie mit, was ich falsch mache.

Antwort

1

Sie sollten @Html.Raw() wie verwenden;

@Html.Raw(Model.myString)

Hoffnung, das hilft.

+0

Möchten Sie '@ Html.Raw (Model.myString)' in 'HtmlString.cshtml' verwenden? Weil ich es in meinem View versucht habe und das Ajax-Formular abgelehnt hat. – usr4896260

+1

@ usr4896260. Die Verwendung von 'Html.Raw()' ist korrekt. Aber das hat nichts mit deiner Ajax-Form zu tun. Wenn Sie ein Problem damit haben, sollten Sie den entsprechenden Code anzeigen. –

0

Ich habe einige kleine Änderungen an Ihrem Code vorgenommen. Bitte testen und implementieren.

Ersetzen Sie in Ihrer HtmlString.cshtml Datei Ihren Code durch den folgenden Code. Dies ist ein partial view, der in einer foreach Schleife aufgerufen wird und einen string Wert, der HTML enthält, übergeben wird. @Html.Raw wird verwendet, um den HTML-Code als HTML angezeigt:

@model String 

@Html.Raw(Model) 

Ihre Ansicht wird eine Liste von Strings erhalten, die von der Controller-Aktion-Methode übergeben wird. Jede Zeichenfolge enthält den HTML-Code:

@model List<string> 

@foreach (var s in Model) 
{ 
    @Html.Partial("HtmlString", s) 
} 

Dies sind die Daten, die ich verwendet habe, um Ihr Szenario zu testen. Der HTML-Code, ausgegeben wird, ist korrekt:

public ActionResult TestMethod1() 
{ 
    List<string> strings = new List<string>(); 

    strings.Add("<ul><li>my text</li></ul>"); 
    strings.Add("<ul><li>my text</li></ul>"); 

    return View(strings); 
} 

Die resultierende Ausgabe sieht wie folgt aus:

<ul><li>my text</li></ul><ul><li>my text</li></ul> 

Ich hoffe, dass ich Ihre Frage richtig verstanden?

Verwandte Themen