Html.Raw不解码

时间:2013-04-16 11:11:52

标签: asp.net-mvc

只是一个查询,我之前使用过@Html.Raw(Item.sometext)并且正确解码了html标签,我从jore格式的remore源获取了一些数据,但是当我在页面上显示时发现了Html.raw没有解码html标签。

解决我使用过的问题:

@Html.Raw(HttpUtility.HtmlDecode(Item.sometext))

所以我的问题是,有人可以告诉我为什么会这样,因为我很好奇它的原因。我正在使用mvc4和asp.net 4.5

由于

乔治

1 个答案:

答案 0 :(得分:3)

这是我的答案,试图更好地解释我的意思(在评论中)。

您的JSON格式化为例如(您提供的),如下所示:

<p><b>Location. <\/b> <br \/>...

但是,这不是有效的HTML。注意用于斜杠“/”的转义字符。因此,如果您将此值传递给Html.Raw,它将(应该)输出它,但它不是有效的HTML,因此不太可能正确显示(如果它显示任何内容)。

可以使用Html.Decode修复此转义字符问题,这将有效地返回以下内容:

<p><b>Location. </b> <br />...

这是有效的HTML,因此可以毫无问题地传递给Html.Raw


注意:Html.Raw不进行任何编码/解码,实际上它明确指示不应对提供的值进行编码,因为它已经是原始HTML。这是confirmed here

  

当指定的文本表示实际的HTML时,请使用Raw方法   不应编码的片段以及要渲染为的片段   标记为HTTP响应。