Come posso evitare il testo per l'uso di HTML in C #? voglio fare
sample="<span>blah<span>"
e avere
<span>blah<span>
vengono visualizzati come testo semplice anziché blah solo con i tag parte dell'html :(. Utilizzo di C # non ASP
Come posso evitare il testo per l'uso di HTML in C #? voglio fare
sample="<span>blah<span>"
e avere
<span>blah<span>
vengono visualizzati come testo semplice anziché blah solo con i tag parte dell'html :(. Utilizzo di C # non ASP
Risposte:
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Inoltre, è possibile utilizzare questo se non si desidera utilizzare l' System.Web
assembly:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Per questo articolo , la differenza tra System.Security.SecurityElement.Escape()
e System.Web.HttpUtility.HtmlEncode()
è che il primo codifica anche (')
caratteri apostrofo .
SecurityElement.Escape()
escape per XML che non è esattamente HTML.
Se stai utilizzando .NET 4 o versioni successive e non desideri fare riferimento System.Web
, puoi utilizzare WebUtility.HtmlEncode
daSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Questo ha lo stesso effetto di HttpUtility.HtmlEncode
e dovrebbe essere preferito rispetto a System.Security.SecurityElement.Escape
.
SecurityElement.Escape
opera su XML e HtmlEncode
funziona su HTML, e la codifica XML e HTML ha requisiti leggermente diversi (vedi questa risposta per i dettagli). Quindi, ad esempio, SecurityElement.Escape
è consentito l'uso '
, mentre HtmlEncode
non lo è.
nessuno ha ancora menzionato, in ASP.NET 4.0 c'è una nuova sintassi per farlo. invece di
<%= HttpUtility.HtmlEncode(unencoded) %>
puoi semplicemente fare
<%: unencoded %>
leggi di più qui: 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
È possibile utilizzare tag html effettivi <xmp>
e </xmp>
generare la stringa in modo da mostrare tutti i tag tra i tag xmp.
Oppure puoi anche usarlo sul server Server.UrlEncode
o HttpUtility.HtmlEncode
.
Non l'ho visto qui
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
è stata l'unica cosa che ha funzionato (asp 4.0+) quando si ha a che fare con HTML come questo. Il '
ottiene reso come '
(usando htmldecode) nella html, facendolo sicuro:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
ci sono alcuni caratteri di virgolette speciali che non vengono rimossi da HtmlEncode e non verranno visualizzati correttamente in Edge o IE come "e". puoi estendere la sostituzione di questi personaggi con qualcosa come la seguente funzione.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}