带有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 p>”);
我刚与Tinymce和Asp.NET MVC有类似的问题。 在我看来,发生的事情是:
- 表单已提交并且tinymce html对内容进行
encoding: 'xml'
(我使用的是encoding: 'xml'
选项) - 在我的服务器端后期操作中,我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设置有帮助吗?