Как я могу показать viewbag как html?
ОК, совершенно новый для ASP.Net MVC, поэтому я сожалею, если это глупый вопрос, но как мне показать значения ViewBag как HTML. Например, если ViewBag.SomeMessage содержит следующий текст:
<h3>Test</h3><p>Test</p><p>Test</p><p>Test</p><p>Test</p><p>TEST</p>
Как бы я пошел, действительно ли отображая страницу как обычный HTML? Или есть намного более простой способ достичь этого, которого я полностью потерял?
Ура!
Ответы
Ответ 1
Все верно при использовании @Html.Raw()
, но я хочу указать на то, чтобы быть осторожным с этим, так как это может сделать ваш сайт уязвимым для уязвимостей XSS.
Я бы объединил @Html.Raw(ViewBag.SomeMessage)
с Microsoft Anti-XSS Library, чтобы убедиться, что вы не вводите никаких уязвимостей из этого.
Edit:
Преимущество библиотеки Anti-XSS (если вы ее не рассматривали) имеет белый список утвержденных надбавок (например, <b>
, <h3>
и т.д.), Так что только одобренные разметки будут неактивными, закодирован.
Edit2:
Вот пример, как это делается.
Ответ 2
Вы использовали бы метод Raw
:
@Html.Raw(ViewBag.SomeMessage)
Ответ 3
Я думаю, вы можете сделать что-то вроде этого:
@Html.Raw(ViewBag.SomeMessage)
Ответ 4
@Html.Raw(ViewBag.SomeHtmlProperty)
Это сказано, здесь мое выражение об отказе: НЕ ИСПОЛЬЗУЙТЕ ViewBag. Используйте строго типизированные представления и модели просмотра. ViewBag/ViewData похожа на рак для приложения ASP.NET MVC.
Ответ 5
поместите данные в ViewBag как строку в кодировке HTML, которая не должна быть закодирована снова.
ViewBag.myBag = MvcHtmlString.Create(myCode ?? string.Empty);
затем используйте
@ViewBag.myBag
документация для MvcHtmlString.