Html.Encode
scheint einfach HttpUtility.HtmlEncode
anrufen, um ein paar HTML-spezifische Zeichen mit ihren Escape-Sequenzen zu ersetzen.ASP.NET MVC Html.Encode - Neue Zeilen
Allerdings berücksichtigt dies nicht, wie neue Zeilen und mehrere Leerzeichen interpretiert werden (Markup-Leerzeichen). So stelle ich einen Textbereich zur Verfügung, damit ein Benutzer einen Klartextblock von Information eingeben kann, und später diese Daten auf einem anderen Bildschirm anzeigen (unter Verwendung Html.Encode
), die neuen Linien und der Abstand werden nicht konserviert.
Ich denke, es gibt 2 Möglichkeiten, aber vielleicht gibt es eine bessere 3. kann jemand vorschlagen.
Eine Möglichkeit wäre, nur eine statische Methode zu schreiben, den Htmlencode verwendet und ersetzt dann neue Zeilen in dem resultierenden String mit <br>
und Gruppen aus mehreren Räumen mit
Einer weiteren Möglichkeit zu Chaos wäre etwa mit den white-space: pre
Attribut in meinen Stylesheets - aber ich bin mir nicht sicher, ob dies zu Nebenwirkungen führen würde, wenn HTML-Hilfsmethoden neue Zeilen und Tabs enthalten, um die Seitenquelle schön zu machen.
Gibt es eine dritte Option, wie eine globale Flag, Ereignis oder Methode überschreiben kann ich ändern, wie HTML-Codierung erfolgt, ohne die HTML-Helper-Methoden wiederholen müssen?
Der Controller-Teil wird nicht kompiliert. – 1kevgriff
Kompiliert nicht.sollte sein: MvcHtmlString codiert = MvcHtmlString (HttpContext.Current.Server.HtmlEncode (Body) .Replace (Environment.NewLine, "
")); – AntonK
"Der Typ 'System.Web.HttpServerUtility' hat keine Konstruktoren definiert" verwenden Sie HttpUtility.HtmlEncode – Benoit