Eu tenho HTML seguro / higienizado salvo em uma tabela de banco de dados.
Como posso escrever esse conteúdo HTML em uma exibição do Razor?
Ele sempre escapa caracteres como <
e comercial para &
.
Eu tenho HTML seguro / higienizado salvo em uma tabela de banco de dados.
Como posso escrever esse conteúdo HTML em uma exibição do Razor?
Ele sempre escapa caracteres como <
e comercial para &
.
@Html.Raw()
Respostas:
Supondo que seu conteúdo esteja dentro de uma string chamada
mystring
...Você pode usar:
Como alternativa, você pode converter sua string para
HtmlString
ou qualquer outro tipo que seja implementadoIHtmlString
no modelo ou diretamente embutido e use regularmente@
:fonte
razor
sintaxe eHtml.Raw
definitivamente está disponível para mim.No ASP.NET MVC 3, você deve fazer algo assim:
fonte
Você pode usar
fonte
Html.Raw()
não funciona láÀs vezes, pode ser complicado usar html bruto. Principalmente por causa da vulnerabilidade XSS. Se isso é uma preocupação, mas você ainda deseja usar o html bruto, pode codificar as partes assustadoras.
Resulta em
fonte
Você pode colocar sua string em viewdata no controller assim:
E, em seguida, chame esses dados de visualização da seguinte maneira:
fonte
Além de usar
@MvcHtmlString.Create(ViewBag.Stuff)
como sugerido por Dommer, sugiro que você também use a biblioteca AntiXSS , conforme sugerido em http://haacked.com/archive/2010/04/06/using-antixss-as-the-default-encoder-for-asp -net.aspxEle codifica quase toda a sequência de ataques XSS possível.
fonte
Exemplo completo para usar funções de modelo no RazorEngine (para geração de email, por exemplo):
fonte