Как отобразить html-тег в свойстве модели в MVC [duplicate]

393
задан p.campbell 1 May 2013 в 17:30
поделиться

6 ответов

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

 ViewData["string"] = DBstring;

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

@Html.Raw(ViewData["string"].ToString())
4
ответ дан Ajay 25 August 2018 в 06:09
поделиться

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

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

@Html.Raw(mystring)

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

@{ var myHtmlString = new HtmlString(mystring);}
@myHtmlString
596
ответ дан Alexei Levenkov 25 August 2018 в 06:09
поделиться

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

@{ WriteLiteral("html string"); }
54
ответ дан Andrus 25 August 2018 в 06:09
поделиться

Помимо использования @MvcHtmlString.Create(ViewBag.Stuff), как предложено Dommer, я предлагаю вам также использовать библиотеку AntiXSS , как предлагалось в качестве фила http://haacked.com/archive/2010/04/06 /using-antixss-as-the-default-encoder-for-asp-net.aspx

Он кодирует почти всю возможную строку атаки XSS.

2
ответ дан Imad Alazani 25 August 2018 в 06:09
поделиться

В 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)
73
ответ дан Tom Chantler 25 August 2018 в 06:09
поделиться

Иногда бывает сложно использовать 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>)
9
ответ дан Travis J 25 August 2018 в 06:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: