Ich speichere verschlüsseltes HTML in der Datenbank.
Der einzige Weg, wie ich es richtig anzeigen könnte, ist:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
Es ist hässlich. Gibt es einen besseren Weg, dies zu tun?
Verwenden Sie
Html.Raw()
. Phil Haack hat eine nette Syntaxanleitung unter http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx veröffentlicht .<div class='content'> @Html.Raw( Model.Content ) </div>
quelle
das ist ziemlich einfach:
Eine andere Lösung, Sie könnten auch einen HTMLString zurückgeben, Razor gibt die richtige Formatierung aus:
in der Ansicht selbst:
im Controller:
public static HtmlString GetSomeHtml() { var Data = "abc<br/>123"; return new HtmlString(Data); }
quelle
Sie können die
HtmlString
Klasse auch einfach verwenden@(new HtmlString(Model.Content))
quelle
Imho sollten Sie Ihre HTML-codierten Daten nicht in der Datenbank speichern. Speichern Sie einfach im Klartext (nicht verschlüsselt) und zeigen Sie Ihre Daten einfach so an, und Ihr HTML wird automatisch verschlüsselt:
<div class='content'> @Model.Content </div>
quelle
Ich habe gerade einen anderen Fall bekommen, um Backslash
\
mit Razor und Java Script anzuzeigen .Mein
@Model.AreaName
sieht aus wie Name1 \ Name2 \ Name3. Wenn ich es also anzeige , sind alle Backslashes verschwunden und ich sehe Name1Name2Name3Ich habe eine Lösung gefunden, um das Problem zu beheben:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
Vergessen Sie nicht,
@using Newtonsoft.Json
oben auf derchtml
Seite hinzuzufügen .quelle