Wie werden codierte Tags als korrektes HTML und nicht als Text dargestellt?
Ich bin immer der folgende text aus einer Datenbank: (wird vom client, also kann ich nicht viel mit ihm)
investment professionals.<BR /><BR /> blah blah blah
die wird immer so dargestellt, als:
investment professionals.<BR /><BR /> blah blah blah
Ich nicht ausgeben wollen <BR />
- tags auf dem Bildschirm. Ich möchte, dass Sie sich Verhalten wie wirkliche Pausen.
Den folgenden Html-Helper-code erstellt der Spanne es existiert in, fügt hinzu, dass, um ein div-Element und gibt den HTML-string:
StringBuilder sbElements = new StringBuilder();
TagBuilder span = new TagBuilder("span") {InnerHtml = subject.AboutText};
sbElements.Append(span.ToString());
TagBuilder div = new TagBuilder("div");
div.MergeAttribute("class", "about-text");
div.InnerHtml = sbElements.ToString();
return div.ToString();
Wenn ich Html.Encode()
die Ausgabe der helper-Methode, die verschlüsselte tags - /><
- get auf den Bildschirm geschrieben. Wie kann ich den Quelltext habe ich, und sicherzustellen, dass die tags erhalten als HTML gerendert, sondern als text?
InformationsquelleAutor der Frage DaveDev | 2011-03-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
InformationsquelleAutor der Antwort Steve Wellens
Wenn Sie mit Razor, es wird doppelt-Kodieren der Zeichenkette wie @Chevex beschrieben. Wenn Sie die neuen MVC3
<%: %>
syntax, wird es auch doppelt zu Kodieren. Unabhängig von Ihrer Ansicht-engine, können Sie umgehen die Codierung entweder mit der IHtmlString Strecke (z.B., MvcHtmlString) beschrieben durch @Chevex oder, unter Umgehung der Standard-Codierung mit einem anderen template syntax.Den späteren, die sich nicht um änderungen am Programm-code, nur erfordert das optimieren der syntax, die Sie verwenden, um das Rendern einer Ansicht.
Für Razor:
Für MVC-Standard-Ansicht template-system:
InformationsquelleAutor der Antwort patridge
Ändern zurück
div.ToString()
zuMvcHtmlString.Create(div.ToString())
und den Rückgabetyp der Methode anMvcHtmlString
statt einerstring
. Dies verhindert, dass die view-engine automatisch die Codierung der Ausgabe.Rückkehr
MvcHtmlString
ist die gängige Praxis für das Rendern der HTML-Ausgabe über die helper-Methoden.Was passiert ist, dass Sie die Decodierung der Wert aus der Datenbank und die view-engine ist es erneut zu encodieren, wenn es gemacht wird. Die Razor view engine automatisch die HTML-Ausgabe codiert in deinen Ansichten, es sei denn, es ist ein
MvcHtmlString
. RückkehrMvcHtmlString
stoppen, dass aus geschieht.InformationsquelleAutor der Antwort Chev
Können Sie versuchen, diese:
InformationsquelleAutor der Antwort Shahnila
Die Sie tatsächlich verwenden möchten
Html.Decode(string)
. Dies wird zu konvertieren codierte Zeichen wie<
zu<
.InformationsquelleAutor der Antwort realistschuckle
Nur, um meine Erkenntnisse zu dieser Frage, wie ich kämpfte, um zu verwenden × auf diese Weise.
SetInnerText() wird das html-codieren Sie alle text standardmäßig in der Erwägung, dass InnerHtml nicht codieren alles, wie es erwartet wird raw html.
Also, wenn ich habe bekam es der richtige Weg, um Sie erst Dekodieren Sie Ihre text-string, um die un-codierten tags (ie
<br/>
) und dann setzen Sie diese in die InnerHtml-Eigenschaft und die tags als html gerendert.so hätten Sie so etwas wie
InformationsquelleAutor der Antwort ScottG