如何在 C # 中为 html 使用转义文本? 我想做什么
sample="<span>blah<span>"
并且
<span>blah<span>
显示为纯文本,而不仅仅是带有 html: (。 使用 C # 而不是 ASP
可以使用实际的 html 标记 <xmp>和 </xmp>输出字符串,以显示 xmp 标记之间的所有标记。
<xmp>
</xmp>
或者也可以在服务器 Server.UrlEncode或 HttpUtility.HtmlEncode上使用。
Server.UrlEncode
HttpUtility.HtmlEncode
using System.Web; var encoded = HttpUtility.HtmlEncode(unencoded);
另外,如果不想使用 System.Web程序集,也可以使用这个函数:
System.Web
var encoded = System.Security.SecurityElement.Escape(unencoded)
对于 这篇文章,System.Security.SecurityElement.Escape()和 System.Web.HttpUtility.HtmlEncode()的区别在于前者也编码撇号 (')字符。
System.Security.SecurityElement.Escape()
System.Web.HttpUtility.HtmlEncode()
(')
在 ASP.NET 4.0中有新的语法来做这件事
<%= HttpUtility.HtmlEncode(unencoded) %>
你可以简单地做
<%: unencoded %>
点击这里阅读更多:
ASP.NET 4(和 ASP.NET MVC 2)中 HTML 编码输出的新 <% :% > 语法
如果您正在使用.NET 4或更高版本,并且您不想引用 System.Web,那么您可以从 System中使用 WebUtility.HtmlEncode
System
WebUtility.HtmlEncode
var encoded = WebUtility.HtmlEncode(unencoded);
这与 HttpUtility.HtmlEncode具有相同的效果,应优于 System.Security.SecurityElement.Escape。
System.Security.SecurityElement.Escape
你可使用:
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
这是唯一一个在处理这样的 HTML 时有效的方法(ASP.NET 4.0 +)。在 HTML 内容中,'被呈现为 '(使用 Htmldecode) ,导致其失败:
'
'
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
.NET 4.0及以上版本:
using System.Web.Security.AntiXss; //... var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
有些特殊的引号字符不会被 HtmlEncode 删除,也不会在 Edge 或 Internet Explorer 中正确显示,比如 ”和 “。您可以扩展使用下面的函数来替换这些字符。
”
“
private string RemoveJunkChars(string input) { return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\"")); }
要在 Razor 页面中实现这一点,可以使用以下方法:
在. cshtml 中:
@Html.Raw(Html.Encode("<span>blah<span>"))
在. cshtml.cs 中:
string rawHtml = Html.Raw(Html.Encode("<span>blah<span>"));