Como escapar de texto para uso de html em c #? eu quero fazer
sample="<span>blah<span>"
e tem
<span>blah<span>
aparecem como texto sem formatação em vez de blá somente com as tags que fazem parte do html :(. Usando c # não ASP
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Além disso, você pode usar isso se não quiser usar o
System.Web
assembly:Por este artigo , a diferença entre
System.Security.SecurityElement.Escape()
eSystem.Web.HttpUtility.HtmlEncode()
é que o primeiro também codifica(')
caracteres de apóstrofo .fonte
SecurityElement.Escape()
escapes para XML, que não é exatamente HTML.Se você estiver usando o .NET 4 ou superior e não quiser fazer referência
System.Web
, poderá usar aWebUtility.HtmlEncode
partir deSystem
Isso tem o mesmo efeito
HttpUtility.HtmlEncode
e deve ser preferidoSystem.Security.SecurityElement.Escape
.fonte
SecurityElement.Escape
opera em XML eHtmlEncode
opera em HTML, e a codificação XML e HTML tem requisitos ligeiramente diferentes (consulte esta resposta para obter detalhes). Então, por exemplo,SecurityElement.Escape
é permitido usar'
, enquantoHtmlEncode
não é.ninguém mencionou ainda, no ASP.NET 4.0 há uma nova sintaxe para fazer isso. ao invés de
você pode simplesmente fazer
leia mais aqui: http://weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- asp-net-mvc-2.aspx
fonte
.NET 4.0 e superior:
fonte
Você pode usar tags html reais
<xmp>
e</xmp>
gerar a string como está para mostrar todas as tags entre as tags xmp.Ou você também pode usar no servidor
Server.UrlEncode
ouHttpUtility.HtmlEncode
.fonte
<xmp>
foi descontinuado há muito tempo: stackoverflow.com/questions/8307846/… use<pre>
vezNão vi isso aqui
foi a única coisa que funcionou (asp 4.0+) ao lidar com html como este. O
'
é renderizado como'
(usando htmldecode) no html, causando falha:fonte
existem alguns caracteres de aspas especiais que não são removidos pelo HtmlEncode e não serão exibidos corretamente no Edge ou no IE como "e". você pode substituir esses caracteres por algo como a função abaixo.
fonte
Para aqueles que no futuro procuram uma maneira simples de fazer isso nas páginas do Razor, use o seguinte:
Em .cshtml:
Em .cshtml.cs:
fonte