Isso não é inteiramente correto. Sim, você pode inserir uma string não processada, mas se tiver, "'<>etc...ela será escapada. A maneira correta é usar o MvcHtmlString que permitirá caracteres "ilegais". Por exemplo, se você estiver codificação de dados Json ... sem que codifica uma modelo inteiro
Daniel B. Chapman
4
Daniel, Html.Raw () "retorna marcação que não é codificada em HTML".
Lucas
1
Html.Raw () codifica as aspas ..."myAttr='hello';myInt=10"
Serge
4
NÃO codifica aspas. Além da documentação óbvia, declarando-a clara como dia ( "Esse método envolve a marcação HTML usando a classe IHtmlString, que renderiza HTML não codificado ". ) Também testei isso e as aspas não são codificadas.
Assim como a abordagem @ Html.Raw (string) já mencionada, se você produzir uma MvcHtmlString, ela não será codificada. Isso pode ser útil ao adicionar suas próprias extensões ao HtmlHelper ou ao retornar um valor do seu modelo de exibição que você sabe que pode conter html.
<!--this will be encoded --><div>@Model.SampleString</div><!--this will not be encoded --><div>@Html.Raw(Model.SampleString)</div><!--this will not be encoded either --><div>@Model.SampleHtmlString</div>
Use @Html.Raw()com cuidado, pois poderá causar mais problemas com codificação e segurança. Entendo o caso de uso, pois tinha que fazer isso sozinho, mas com cuidado ... Evite permitir a passagem de todo o texto. Por exemplo, apenas preserve / converta seqüências de caracteres específicas e sempre codifique o restante:
Então, tenha a certeza de que não criou uma falha de segurança em potencial e que caracteres especiais / estrangeiros são exibidos corretamente em todos os navegadores.
+1 Exatamente o que eu precisava! A string ainda precisa ser codificada, mas os retornos da linha precisam ser html. Obrigado!
Peter Peter
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))para ASP.NET Core
kenjiuno 28/03
5
No caso do ActionLink, ele geralmente usa HttpUtility.Encode no texto do link. Nesse caso, você pode usá-
HttpUtility.HtmlDecode(myString)
lo funcionou para mim ao usar o HtmlActionLink para decodificar a sequência que eu queria passar. por exemplo:
"'<>etc...
ela será escapada. A maneira correta é usar o MvcHtmlString que permitirá caracteres "ilegais". Por exemplo, se você estiver codificação de dados Json ... sem que codifica uma modelo inteiro"myAttr='hello';myInt=10"
fonte
Assim como a abordagem @ Html.Raw (string) já mencionada, se você produzir uma MvcHtmlString, ela não será codificada. Isso pode ser útil ao adicionar suas próprias extensões ao HtmlHelper ou ao retornar um valor do seu modelo de exibição que você sabe que pode conter html.
Por exemplo, se o seu modelo de visualização era:
Para Core 1.0+ (e MVC 5+), use HtmlString
então
fonte
Use
@Html.Raw()
com cuidado, pois poderá causar mais problemas com codificação e segurança. Entendo o caso de uso, pois tinha que fazer isso sozinho, mas com cuidado ... Evite permitir a passagem de todo o texto. Por exemplo, apenas preserve / converta seqüências de caracteres específicas e sempre codifique o restante:Então, tenha a certeza de que não criou uma falha de segurança em potencial e que caracteres especiais / estrangeiros são exibidos corretamente em todos os navegadores.
fonte
@Html.Raw(Html.Encode(myString).Replace(Html.Encode("\n"), "<br/>"))
para ASP.NET CoreNo caso do ActionLink, ele geralmente usa HttpUtility.Encode no texto do link. Nesse caso, você pode usá-
HttpUtility.HtmlDecode(myString)
lo funcionou para mim ao usar o HtmlActionLink para decodificar a sequência que eu queria passar. por exemplo:fonte
Você também pode usar o método WriteLiteral
fonte
RAW HTML:
fonte