【问题标题】:MVC: Binding CKEditor textarea value to the modelMVC:将 CKEditor textarea 值绑定到模型
【发布时间】:2015-06-28 08:55:23
【问题描述】:

我已选择 CKEditor 作为我的 ASP.Net MVC 项目的富文本编辑器组件。

渲染富文本编辑器不是问题(其实很简单):

@Html.TextAreaFor(model => model.MessageDiffusion.Message, new { @id = idRichTextEditor })

<script type="text/javascript">
    $(document).ready(function () {
    // Rich Text Editor (CKEditor) Configuration 
        CKEDITOR.replace(
            idRichTextEditor, {
                language: 'fr'
            }
        );
    });
</script>

呈现:

我的问题与发布数据有关。如果我将消息更改为:“新消息”,我仍然会在帖子中看到“旧消息”:

我的意思是,viewModel 将有一个属性消息,其中将包含“旧消息”而不是“新消息”。 我尝试在发布之前立即执行以下操作(onBegin):

  $('#idRichTextEditor').text(CKEDITOR.instances["idRichTextEditor"].getData());

或者:

$('#idRichTextEditor').val(CKEDITOR.instances["idRichTextEditor"].getData());

这没有帮助...我也尝试过:

for (var instanceName in CKEDITOR.instances) {
    CKEDITOR.instances["idRichTextEditor"].updateElement();
}

但我似乎无法将 CKEditor 的文本区域与我的模型绑定。我想说的是,如果我把这个富文本区域变成一个公共文本区域,我可以很容易地在控制器端获得“新消息”。

我想说,尽管很有趣,并且与我的问题相关,但以下 stackoverflow 的讨论对我没有多大帮助:

CKEditor MVC 3 implementation Help needed

CKEditor and ASP.Net MVC 3 RequiredAttribute

我认为这个问题可能与

在 CKEditor 中设置数据是一个异步操作,如果任何元素是编辑器,则 val('some data') 将返回一个 jQuery Promise 对象。您可以将它与 jQuery 助手一起使用: $.when( $( '#editor' ).val( 'foo' ) ).then( function() { // 现在您确定数据已设置。 });

我在这里阅读了以下信息: CKEditor 4 documentation

更新:我刚刚意识到,当我第二次发布数据时,富文本信息已正确绑定到我的视图模型的 Message 属性。这意味着如果我点击“保存按钮”两次,但不是一次,我可以获得我想要的东西......

【问题讨论】:

  • 你能用ViewModel的定义更新问题吗?
  • 嗨@ramiramilu,MessageDiffusion 是一个实体,Message 属性是一个字符串。

标签: c# asp.net-mvc asp.net-mvc-4 model-view-controller ckeditor


【解决方案1】:

我想我只是在 StackOverFlow 上搜索得不够好,它确实可以解决所有问题。正确答案是:

$('#YOURFORMID').on('submit', function(){
    for ( instance in CKEDITOR.instances ) {
        CKEDITOR.instances[instance].updateElement();
    }
});

我在这里找到的:

CKEDITOR doesn't submit data via ajax on first submit

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-03
    • 2017-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多