Ich habe ein Textbereichssteuerelement, das Eingaben akzeptiert. Ich versuche, diesen Text später in einer Ansicht zu rendern, indem ich einfach Folgendes verwende:
@ Model.CommentText
Dadurch werden alle Werte ordnungsgemäß codiert. Ich möchte jedoch die Zeilenumbruchzeichen durch ersetzen <br />
und kann nicht sicherstellen, dass die neuen br-Tags nicht codiert werden. Ich habe versucht, HtmlString zu verwenden, hatte aber noch kein Glück.
asp.net-mvc
asp.net-mvc-3
razor
bkaid
quelle
quelle
\n
in der Datenbank gespeichert sind und Sie in eine konvertieren möchten<br />
?Antworten:
Verwenden Sie die CSS-Leerraum-Eigenschaft, anstatt sich XSS-Schwachstellen auszusetzen!
quelle
pre-line
(mir war nur bewusstnowrap
undpre
).white-space: pre-wrap;
ist es besser, dapre-line
es Ihren Text durcheinander bringt, indem Sie Leerzeichen in einem Leerzeichen gruppieren.Versuche Folgendes:
Aktualisieren:
Laut einem
marcind's
Kommentar zu dieser verwandten Frage möchte das ASP.NET MVC-Team etwas Ähnliches wie die<%:
und<%=
für die Razor View Engine implementieren .Update 2:
Wir können jede Frage zur HTML-Codierung in eine Diskussion über schädliche Benutzereingaben verwandeln, aber davon gibt es bereits genug.
Achten Sie auf jeden Fall auf potenziell schädliche Benutzereingaben.
Update 3 (Asp.Net MVC 3):
quelle
<script>
.\n
anstelle von\r\n
Auf Zeilenumbrüche aufteilen (umgebungsunabhängig) und regelmäßig drucken - Sie müssen sich keine Gedanken über Codierung oder xss machen:
(Leere Einträge entfernen ist optional)
quelle
Omars dritte Lösung als HTML-Helfer wäre:
quelle
Hier ist eine HTML-Helper-Erweiterung, die das DRY-Prinzip auf Omars Lösung anwendet :
Verwendung (mit verbessertem Regex):
Dies hat auch den zusätzlichen Vorteil, dass der Razor View-Entwickler weniger belastet wird, um die Sicherheit vor XSS-Schwachstellen zu gewährleisten.
Mein Anliegen bei Jacobs Lösung ist, dass das Rendern der Zeilenumbrüche mit CSS die HTML-Semantik unterbricht .
quelle
Ich musste Text in Absätze ("p" -Tags) aufteilen, also habe ich einen einfachen Helfer erstellt, der einige der Empfehlungen in früheren Antworten verwendet (danke Jungs).
Verwendung:
quelle
Ich bevorzuge diese Methode, da kein manuelles Markup ausgegeben werden muss. Ich benutze dies, weil ich Razor Pages in Strings rendere und sie per E-Mail versende. In dieser Umgebung funktioniert das White-Space-Styling nicht immer.
quelle