Запись/вывод HTML-строк без сохранения

У меня есть безопасный/дезинфицированный HTML-код, сохраненный в таблице DB.

Как я могу записать этот HTML-контент в виде Razor?

Он всегда избегает символов типа < и амперсандов до &amp;.

Ответ 1

Предположим, что ваш контент находится внутри строки с именем mystring...

Вы можете использовать:

@Html.Raw(mystring)

В качестве альтернативы вы можете преобразовать свою строку в HtmlString или любой другой тип, который реализует IHtmlString в модели или непосредственно в строке и использует обычный @:

@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString

Ответ 2

В ASP.NET MVC 3 Вы должны сделать что-то вроде этого:

// Say you have a bit of HTML like this in your controller:
ViewBag.Stuff = "<li>Menu</li>"
//  Then you can do this in your view:
@MvcHtmlString.Create(ViewBag.Stuff)

Ответ 3

Вы можете использовать

@{ WriteLiteral("html string"); }

Ответ 4

Иногда бывает сложно использовать raw html. В основном из-за уязвимости XSS. Если это вызывает беспокойство, но вы все еще хотите использовать raw html, вы можете закодировать страшные части.

@Html.Raw("(<b>" + Html.Encode("<script>console.log('insert')</script>" + "Hello") + "</b>)")

Результаты в

(<b>&lt;script&gt;console.log('insert')&lt;/script&gt;Hello</b>)

Ответ 5

Вы можете поместить свою строку в viewdata в контроллере следующим образом:

 ViewData["string"] = DBstring;

И затем вызовите эти viewdata следующим образом:

@Html.Raw(ViewData["string"].ToString())