如何显示包含html标签的内容?

时间:2009-05-13 14:48:37

标签: asp.net-mvc

我在asp.net mvc应用程序的Create.aspx页面中使用FckEditor。

由于我需要在网页中显示富文本,因此我在控制器类中使用了ValidateInput(false)属性top of action方法。

我在Details.aspx中使用了Html.Encode(Model.Message)来保护用户的攻击。<​​/ p>

但是,我得到了我不想要的结果:

  

<p> Hello </p>

我想要的结果不是上面的结果:

  

Hello

如何向用户输入文本显示文字?

提前致谢

3 个答案:

答案 0 :(得分:0)

用户似乎已将"<p> Hello </p>"(由于按Enter键)输入编辑控件,并且在HTML中显示正确,因为您已完成Html.Encode。例如。 paragrahs不会被渲染,它们被输出为"<p>..</p>",因为字符串被HTML编码为类似"&lt;p&gt; Hello &lt;p&gt;"的内容。

如果你不想要标签,我建议在文本字符串中搜索标签(带有<...>的东西)并从输入的文本中删除它们。在HTML.Encode之前执行此操作。

......或者我错过了什么?

答案 1 :(得分:0)

答案 2 :(得分:0)

简短的回答是HTMLEncode正在让你的标记显示出来。如果你没有HTMLEncode,它会做你想要的。

您需要考虑是否需要完全控制标记,谁正在输入标记,以及是否可以选择像BBCode这样的替代标记。

如果使用编辑器的用户都确定是“安全”用户,那么XSS不太可能成为一个问题。但是,如果您在注释字段中使用它,那么BBCode或SO本身使用的更合适。

你将无法使用WYSIWYG编辑器并执行HTMLEncode ...(没有BBCode或其他令牌系统)