我在cshtml页面中使用ckeditor将内容输入到我的数据库中,稍后将显示在带有html标签的页面上,以使文本更易于阅读。由于我通过textarea输入内容,因此我收到一条错误消息,指出我输入<h1><p>
的html标签存在潜在危险。
要绕过此而不将RequestValidation变为false,在我的cinfig.js文件中我设置了:
config.htmlEncodeOutput = true;
在我的页面中显示时,我正在解码数据库中的数据。
@Html.Raw(System.Web.HttpUtility.HtmlDecode(row.Memo))
这很有效。当我第二次尝试编辑数据库中的内容时,我只会遇到麻烦。
我在编辑器中显示如下:
<textarea class="ckeditor" id="editor1" name="Memo" rows="25" cols="120">@Memo</textarea>
在textarea中使用@Memo
,当前数据库内容将显示在编辑器中。问题是,一旦将原始文本发送到编码的数据库,我相信它在编辑器中重新显示时仍然需要进行编码。因此,编辑器将编码的标签视为文本,并在现有标签周围放置新标签,这会造成混乱。
任何想法都将不胜感激。如果需要进一步澄清,请告诉我。
感谢。
答案 0 :(得分:1)
在我提交这个问题之后,我给了这个正确的想法。
我使用@Html.Raw(System.Web.HttpUtility.HtmlDecode(row.Memo))
解码要在页面上显示的数据,因此我可以使用@Html.Raw(System.Web.HttpUtility.HtmlDecode(Memo))
代替@Memo
在编辑器中显示,从而更正了我的问题