Das ist nicht ganz richtig. Ja, Sie können eine Rohzeichenfolge einfügen, aber wenn Sie "'<>etc...diese haben, werden sie maskiert. Der richtige Weg ist die Verwendung des MvcHtmlString, der "unzulässige" Zeichen zulässt. Zum Beispiel, wenn Sie Json-Daten codieren ... ohne ein ganzes Modell zu codieren
Daniel B. Chapman
4
Daniel, Html.Raw () "gibt Markup zurück, das nicht HTML-codiert ist."
Lucas
1
Html.Raw () codiert die Anführungszeichen ..."myAttr='hello';myInt=10"
Serge
4
Es werden KEINE Anführungszeichen codiert. Neben der offensichtlichen Dokumentation, die es einfach als Tag angibt ( "Diese Methode umschließt das HTML-Markup mit der IHtmlString-Klasse, die nicht codiertes HTML rendert ." ) , Habe ich dies auch getestet und Anführungszeichen werden nicht codiert.
Wenn Sie einen MvcHtmlString ausgeben, wird dieser nicht wie der bereits erwähnte @ Html.Raw (String) -Ansatz codiert. Dies kann hilfreich sein, wenn Sie dem HtmlHelper eigene Erweiterungen hinzufügen oder wenn Sie einen Wert aus Ihrem Ansichtsmodell zurückgeben, von dem Sie wissen, dass er HTML enthält.
<!--this will be encoded --><div>@Model.SampleString</div><!--this will not be encoded --><div>@Html.Raw(Model.SampleString)</div><!--this will not be encoded either --><div>@Model.SampleHtmlString</div>
Seien Sie @Html.Raw()vorsichtig, da dies zu größeren Problemen bei der Codierung und Sicherheit führen kann. Ich verstehe den Anwendungsfall, da ich dies selbst tun musste, aber vorsichtig ... Vermeiden Sie einfach, den gesamten Text durchzulassen. Zum Beispiel nur bestimmte Zeichenfolgen beibehalten / konvertieren und immer den Rest codieren:
Dann können Sie sicher sein, dass Sie keine potenzielle Sicherheitslücke erstellt haben und Sonder- / Fremdzeichen in allen Browsern korrekt angezeigt werden.
+1 Genau das, was ich brauchte! Die Zeichenfolge muss noch codiert werden, aber die Zeilenrückgabe muss HTML sein. Vielen Dank!
Peter
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))für ASP.NET Core
Kenjiuno
5
Bei ActionLink wird im Allgemeinen HttpUtility.Encode für den Linktext verwendet. In diesem Fall können Sie es verwenden
HttpUtility.HtmlDecode(myString)
, wenn ich mit HtmlActionLink die Zeichenfolge dekodiere, die ich übergeben möchte. z.B:
"'<>etc...
diese haben, werden sie maskiert. Der richtige Weg ist die Verwendung des MvcHtmlString, der "unzulässige" Zeichen zulässt. Zum Beispiel, wenn Sie Json-Daten codieren ... ohne ein ganzes Modell zu codieren"myAttr='hello';myInt=10"
quelle
Wenn Sie einen MvcHtmlString ausgeben, wird dieser nicht wie der bereits erwähnte @ Html.Raw (String) -Ansatz codiert. Dies kann hilfreich sein, wenn Sie dem HtmlHelper eigene Erweiterungen hinzufügen oder wenn Sie einen Wert aus Ihrem Ansichtsmodell zurückgeben, von dem Sie wissen, dass er HTML enthält.
Zum Beispiel, wenn Ihr Ansichtsmodell war:
Verwenden Sie für Core 1.0+ (und MVC 5+) HtmlString
dann
quelle
Seien Sie
@Html.Raw()
vorsichtig, da dies zu größeren Problemen bei der Codierung und Sicherheit führen kann. Ich verstehe den Anwendungsfall, da ich dies selbst tun musste, aber vorsichtig ... Vermeiden Sie einfach, den gesamten Text durchzulassen. Zum Beispiel nur bestimmte Zeichenfolgen beibehalten / konvertieren und immer den Rest codieren:Dann können Sie sicher sein, dass Sie keine potenzielle Sicherheitslücke erstellt haben und Sonder- / Fremdzeichen in allen Browsern korrekt angezeigt werden.
quelle
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))
für ASP.NET CoreBei ActionLink wird im Allgemeinen HttpUtility.Encode für den Linktext verwendet. In diesem Fall können Sie es verwenden
HttpUtility.HtmlDecode(myString)
, wenn ich mit HtmlActionLink die Zeichenfolge dekodiere, die ich übergeben möchte. z.B:quelle
Sie können auch die WriteLiteral-Methode verwenden
quelle
HTML RAW:
quelle