HTML解码和编码

时间:2012-02-12 10:26:02

标签: c# html asp.net-mvc-3 decode encode

我试图解码我在MVC 3 Razor应用程序中的数据库中的html文本。 数据库中的html文本未编码。 我尝试httpUtility.decode,server.decode,但没有一个工作。 最后我设法使其与Html.raw(string)

一起使用

非工作代码示例

@Server.HtmlDecode(item.ShortDescription)
@HttpUtility.HtmlDecode(item.ShortDescription)

你知道为什么我不能在我的情况下使用html.decode!

我认为这样可以节省其他人几个小时。

2 个答案:

答案 0 :(得分:5)

它可以很好地解码文本,但是当它使用@语法放入页面时会自动再次编码。

Html.Raw方法将字符串包装在HtmlString中,告诉剃刀引擎在放入页面时不对其进行编码。

答案 1 :(得分:2)

如果要在没有任何HTML编码的情况下显示值,可以使用Html.Raw帮助器:

@Html.Raw(item.ShortDescription)

请注意,通过执行此操作,您将打开您的站点以进行XSS攻击,因此您应该非常小心此ShortDescription属性包含的HTML。如果是输入它的用户,您应该绝对确保它是安全的。您可以使用AntiXss library进行此操作。

  

你知道为什么我不能在我的情况下使用html.decode!

因为Html.Decode返回一个字符串,当你将一个字符串提供给@() Razor函数时,它会自动对Html进行再次编码并破坏你之前的努力。这就是Html.Raw助手存在的原因。