Przechowuję zakodowany HTML w bazie danych.
Jedyny sposób, w jaki mogłem go poprawnie wyświetlić, to:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
Jest brzydki. Czy jest lepszy sposób, aby to zrobić?
Użyj
Html.Raw()
. Phil Haack opublikował niezły przewodnik po składni pod adresem http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx .<div class='content'> @Html.Raw( Model.Content ) </div>
źródło
to jest całkiem proste:
Inne rozwiązanie, możesz również zwrócić ciąg HTMLString, Razor wyświetli prawidłowe formatowanie:
w samym widoku:
w kontrolerze:
public static HtmlString GetSomeHtml() { var Data = "abc<br/>123"; return new HtmlString(Data); }
źródło
Możesz także po prostu użyć
HtmlString
klasy@(new HtmlString(Model.Content))
źródło
Imho, nie powinieneś przechowywać danych w bazie danych zakodowanych w formacie HTML. Po prostu przechowuj jako zwykły tekst (nie zakodowany) i wyświetlaj swoje dane w ten sposób, a Twój kod HTML zostanie automatycznie zakodowany:
<div class='content'> @Model.Content </div>
źródło
Właśnie dostałem kolejny przypadek do wyświetlenia odwrotnego ukośnika
\
z Razor i Java Script.Mój
@Model.AreaName
wygląd wygląda jak Imię1 \ Imię2 \ Imię3, więc kiedy go wyświetlam, wszystkie ukośniki odwrotne znikają i widzę Imię1Name2Name3Znalazłem rozwiązanie, aby to naprawić:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
Nie zapomnij dodać
@using Newtonsoft.Json
na górzechtml
strony.źródło