Подтвердить что ты не робот

Как я могу показать 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? Или есть намного более простой способ достичь этого, которого я полностью потерял?

Ура!

4b9b3361

Ответ 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.