Я зберігаю закодований 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
сторінки.