我如何逃脱在C#中的HTML文本使用? 我想要做
sample="<span>blah<span>"
并有
<span>blah<span>
显示为纯文本,而不是只与HTML :(的标记部分等等。使用C#不ASP
我如何逃脱在C#中的HTML文本使用? 我想要做
sample="<span>blah<span>"
并有
<span>blah<span>
显示为纯文本,而不是只与HTML :(的标记部分等等。使用C#不ASP
using System.Web;
var encoded = HttpUtility.HtmlEncode(unencoded);
此外,您还可以使用这个,如果你不希望使用System.Web
组件:
var encoded = System.Security.SecurityElement.Escape(unencoded)
每本文之间的差异System.Security.SecurityElement.Escape()
和System.Web.HttpUtility.HtmlEncode()
是,前者还对单引号(')
字符。
如果您使用以上.NET 4,你不想要引用System.Web
,你可以使用WebUtility.HtmlEncode
从System
var encoded = WebUtility.HtmlEncode(unencoded);
这具有相同的效果HttpUtility.HtmlEncode
和应当优于System.Security.SecurityElement.Escape
。
还没有人提到,在ASP.NET 4.0中有新的语法来做到这一点。 代替
<%= HttpUtility.HtmlEncode(unencoded) %>
你可以简单地做
<%: unencoded %>
在这里阅读更多: 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
您可以使用实际的HTML标记<xmp>
和</xmp>
输出字符串是显示所有标签中的XMP标签之间。
或者你也可以使用在服务器Server.UrlEncode
或HttpUtility.HtmlEncode
。
.NET 4.0以上:
using System.Web.Security.AntiXss;
//...
var encoded = AntiXssEncoder.HtmlEncode("input", useNamedEntities: true);
没有看到这这里
System.Web.HttpUtility.JavaScriptStringEncode("Hello, this is Satan's Site")
它只是说,像这样的HTML打交道时的工作(ASP 4.0+)的东西。 所述'
被渲染为'
(使用htmldecode)在HTML,导致它失败:
<a href="article.aspx?id=268" onclick="tabs.open('modules/xxx/id/268', 'It's Allstars'); return false;">It's Allstars</a>
有未通过的HTMLEncode删除正确喜欢”和“不显示在边缘或IE浏览器的一些特殊字符的报价。 你可以用程度类似下面的功能替换这些字符。
private string RemoveJunkChars(string input)
{
return HttpUtility.HtmlEncode(input.Replace("”", "\"").Replace("“", "\""));
}