带有TinyMCE和XML编码的ASP.Net 4.0在Postback上重新编码内容

我有一个基于ASP.NET 4.0的CMS,我通过jQuery使用TinyMCE(3.4)编辑一个文本框。

除此之外,我还有其他几个文本框。 页面上还有另一个DropDown列表,它控制Contenttype。 此控件启用了AutoPostback,并设置了有关选择项目的文本框的可见性。

因为我想保持回传validation我已经配置TinyXML使用xml进行内容序列化(编码:“xml”)。

现在我遇到了问题,当发生例如DropDown List的回发时,重新编码内容。

Init: "Hallo" 1st Postback: "

Hallo

" 2nd Postback: "

<p>Hallo</p>

"

我通过css启用了原始textarea,这似乎是TinyMCS的Save方法的问题。 有没有人有解决方案,如何在TinyMCE上使用自定义save_callback解决这个问题?

是否可以保存数据后将数据重新加载到tinymce窗口中?

当我之前在TinyMCE / WebForms中遇到这个问题时,可以通过在填充表单字段之前和回发之后解码数据来轻松修复它:

TextAreaID.Text = Server.HtmlDecode(“

hello ”);

我刚与Tinymce和Asp.NET MVC有类似的问题。 在我看来,发生的事情是:

  1. 表单已提交并且tinymce html对内容进行encoding: 'xml' (我使用的是encoding: 'xml'选项)
  2. 在我的服务器端后期操作中,我html解码我想要允许的标签(简化示例: decodedHtml = model.HtmlContent.Replace("<p>", "

    ")

    )。 然后保存到数据库等后,我用解码的html更新model.HtmlContent( model.HtmlContent = decodedHtml

但是在这一点上,tinymce编辑器显示了编码的html,即<p>test</p> 而不是

test

,即使我在我的post操作中做了model.HtmlContent = decodedHtml 。 实际发生的事情是asp.net在回发时忽略模型中的值,而是绑定发布的值(请参阅http://weblog.west-wind.com/posts/2012/Apr/20/ASPNET-MVC-Postbacks- and-HtmlHelper-Controls-ignoring-Model-Changes有关其工作原理的更多详细信息。

解决这个问题的方法是在你的后期行动中做

 ModelState.Remove("HtmlContent"); 

然后它将绑定视图模型中的值而不是发布的值。

所以在我的情况下,问题实际上并不是关于tinymce,而是表单post在asp.net mvc中的工作方式。 希望这有助于某人。

看一下entity_encoding设置有帮助吗?