如何在C#中转义html使用的文本?我想要做
sample="<span>blah<span>"
Run Code Online (Sandbox Code Playgroud)
并有
<span>blah<span>
Run Code Online (Sandbox Code Playgroud)
显示为纯文本而不是blah只与html的标签部分:(.使用C#而不是ASP
Mic*_*ter 179
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
Run Code Online (Sandbox Code Playgroud)
Ter*_*ova 81
此外,如果您不想使用System.Web程序集,则可以使用此选项:
var encoded = System.Security.SecurityElement.Escape(unencoded)
Run Code Online (Sandbox Code Playgroud)
每这篇文章,之间的区别System.Security.SecurityElement.Escape(),并System.Web.HttpUtility.HtmlEncode()为前者还对单引号(')字符.
Ale*_*lex 44
如果您使用的是.NET 4或更高版本而您不想引用System.Web,则可以使用WebUtility.HtmlEncodefromSystem
var encoded = WebUtility.HtmlEncode(unencoded);
Run Code Online (Sandbox Code Playgroud)
这具有HttpUtility.HtmlEncode与之相同的效果,并且应该优先于System.Security.SecurityElement.Escape.
Nac*_*ica 19
没人提到,在ASP.NET 4.0中有新的语法来做到这一点.代替
<%= HttpUtility.HtmlEncode(unencoded) %>
Run Code Online (Sandbox Code Playgroud)
你可以干脆做
<%: unencoded %>
Run Code Online (Sandbox Code Playgroud)
在这里阅读更多内容:http: //weblogs.asp.net/scottgu/archive/2010/04/06/new-lt-gt-syntax-for-html-encoding-output-in-asp-net-4-and- ASP净MVC-2.aspx
.NET 4.0及更高版本:
using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
Run Code Online (Sandbox Code Playgroud)
您可以使用实际的html标记<xmp>并按</xmp>原样输出字符串,以显示xmp标记之间的所有标记.
或者您也可以在服务器上使用Server.UrlEncode或HttpUtility.HtmlEncode.