Я храню закодированный HTML в базе данных.
Единственный способ правильно отобразить это:
<div class='content'>
@MvcHtmlString.Create(HttpUtility.HtmlDecode(Model.Content));
</div>
Это ужасно. Есть ли лучший способ сделать это?
Ответы:
Попробуй это:
<div class='content'>
@Html.Raw(HttpUtility.HtmlDecode(Model.Content))
</div>
Используйте Html.Raw()
. Фил Хаак опубликовал хорошее руководство по синтаксису на http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx .
<div class='content'>
@Html.Raw( Model.Content )
</div>
это довольно просто:
HttpUtility.HtmlDecode(Model.Content)
Другое решение, вы также можете вернуть HTMLString, Razor выведет правильное форматирование:
в самом представлении:
@Html.GetSomeHtml()
в контроллере:
public static HtmlString GetSomeHtml()
{
var Data = "abc<br/>123";
return new HtmlString(Data);
}
Я храню закодированный HTML в базе данных.
Имхо, вы не должны хранить свои данные в html-кодировке в базе данных. Просто сохраните в виде обычного текста (не закодированного) и просто отобразите ваши данные вот так, и ваш html будет автоматически закодирован:
<div class='content'>
@Model.Content
</div>
У меня есть еще один случай отображения обратной косой черты \
с помощью Razor и Java Script.
Мой @Model.AreaName
выглядит как Name1 \ Name2 \ Name3, поэтому, когда я показываю его, все обратные косые черты исчезают, и я вижу Name1Name2Name3
Я нашел решение, чтобы исправить это:
var areafullName = JSON.parse("@Html.Raw(HttpUtility.JavaScriptStringEncode(JsonConvert.SerializeObject(Model.AreaName)))");
Не забудьте добавить @using Newtonsoft.Json
вверху chtml
страницы.