Comment puis-je échapper au texte pour une utilisation HTML en C #? je veux faire
sample="<span>blah<span>"
et avoir
<span>blah<span>
afficher en texte brut au lieu de blah uniquement avec les balises faisant partie du code html: (. Utilisation de C # et non ASP
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
En outre, vous pouvez l'utiliser si vous ne souhaitez pas utiliser l'assembly System.Web
:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Per cet article , la différence entre System.Security.SecurityElement.Escape()
et System.Web.HttpUtility.HtmlEncode()
est que l'ancien code code également les caractères apostrophe (')
.
Si vous utilisez .NET 4 ou une version ultérieure et que vous ne voulez pas référencer System.Web
, vous pouvez utiliser WebUtility.HtmlEncode
from System
var encoded = WebUtility.HtmlEncode(unencoded);
Cela a le même effet que HttpUtility.HtmlEncode
et devrait être préféré à System.Security.SecurityElement.Escape
.
personne n'a encore mentionné, dans ASP.NET 4.0, il existe une nouvelle syntaxe pour le faire. au lieu de
<%= HttpUtility.HtmlEncode(unencoded) %>
vous pouvez simplement faire
<%: unencoded %>
lisez plus ici: 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
Vous pouvez utiliser les balises HTML réelles <xmp>
et </xmp>
pour afficher la chaîne telle quelle, afin d'afficher toutes les balises entre les balises xmp.
Ou vous pouvez également utiliser sur le serveur Server.UrlEncode
ou HttpUtility.HtmlEncode
.
.NET 4.0 et supérieur:
using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
Je n'ai pas vu ça ici
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
c'était la seule chose qui fonctionnait (asp 4.0+) quand on traitait du HTML comme ça. Le'
est rendu sous la forme '
(en utilisant htmldecode) dans le code HTML, ce qui entraîne l'échec de l'opération:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
il y a des caractères de guillemets spéciaux qui ne sont pas supprimés par HtmlEncode et ne seront pas affichés dans Edge ou IE correctement comme "et". vous pouvez, dans la mesure du possible, remplacer ces caractères par quelque chose de similaire à la fonction ci-dessous.
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}