我试图解码我在MVC 3 Razor应用程序中的数据库中的html文本。
数据库中的html文本未编码。
我尝试httpUtility.decode,server.decode,但没有一个工作。
最后我设法使其与Html.raw(string)
非工作代码示例
@Server.HtmlDecode(item.ShortDescription)
@HttpUtility.HtmlDecode(item.ShortDescription)
你知道为什么我不能在我的情况下使用html.decode!
我认为这样可以节省其他人几个小时。
答案 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
助手存在的原因。