2011-03-29 73 views
1

我使用这显示在我看来,一些内容:<%= Html.Encode(Model.synopsis) %>ASP.NET MVC HTML逃生

内容简介有HTML字符转义因此,例如存储在数据库中像这样的一些内容将如下所示:

&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor 
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud 
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure 
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. 
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit 
anim id est laborum.&lt;/p&gt; 

如何更改我的代码以将其显示为HTML?所以转义的HTML在前端变成了HTML。

谢谢。

+0

既然你已经HTML编码的HTML在数据库中,你需要显示它之前,对其进行解码。但是在数据库中没有HTML编码的HTML会更容易。 :)(“HTML编码”的意思是“编码包含在HTML中” - 在将数据存储到数据库时不需要这样做)。 – bzlm 2011-03-29 19:29:48

回答

3

是否<%= Html.HtmlDecode(Model.synopsis) %>做的伎俩,你的情况?

这里是参考MSDN中的实际功能 - http://msdn.microsoft.com/en-us/library/hwzhtkke.aspx

+0

解码不起作用。我正在使用MVC 1 – Cameron 2011-03-29 19:26:20

+1

在这种情况下,请尝试执行Server.HTMLDecode。附:我还在编辑答案中的方法名称,因为我有一个错字。 – Naraen 2011-03-29 19:27:55

+0

'<%= Server.HtmlDecode(Model.synopsis)%>':) – Cameron 2011-03-29 19:29:43

7

请勿使用Html.Encode。只要做

<%= Model.synopsis %> 

Html.Encode对任何特殊的html字符进行编码并转义它们。您可能需要小心,并确保您没有打开自己的XSS允许用户输入任何标记,将由浏览器执行。

也为你想你的输出编码的时候,你可以只使用<%:标签

<%: Model.synopsis %> 

相当于

<%= Html.Encode(Model.synopsis) %> 
+0

尽管如此,现在我看到代码,而不是将它制作成实际的HTML! – Cameron 2011-03-29 19:19:04

+0

@cameron,我很困惑,那你试图达到什么目的? – Vadim 2011-03-29 19:20:41

+0

你在OP上面看到的是我的数据库中存储的内容。当我在视图中显示它时,它显示它像'<p>某些文字... </p >'但是当删除编码时,它显示它像'

文本...

'所以它不会将转义的HTML转换为查看HTML时。 – Cameron 2011-03-29 19:23:59