2

我在 cshtml 页面中使用 ckeditor 将内容输入到我的数据库中,这些内容稍后将显示在带有 html 标签的页面上,以使文本更易于阅读。由于我通过 textarea 输入内容,我收到一条错误消息,指出我输入的 html 标签<h1><p>具有潜在危险。

为了绕过这个而不将 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>

@Memo文本区域中,当前数据库内容显示在编辑器中。问题是一旦将原始文本编码发送到数据库,我相信当它重新显示在编辑器中时,它仍然是编码的,当它需要解码时。因此,编辑器将编码标签视为文本,并在现有标签周围放置新标签,这会造成混乱。

任何想法将不胜感激。让我知道这是否需要更多说明。

谢谢。

4

1 回答 1

2

在我提交这个问题之后,我给了这个恰到好处的想法。

我曾经@Html.Raw(System.Web.HttpUtility.HtmlDecode(row.Memo))对要在页面上显示的数据进行解码,因此我可以在编辑器中使用@Html.Raw(System.Web.HttpUtility.HtmlDecode(Memo))代替@Memo来显示,从而纠正了我的问题。

于 2013-02-20T11:22:23.873 回答