部分视图未在ajax Post请求MVC中序列化

时间:2015-09-23 05:19:55

标签: razor serialization asp.net-mvc-5 partial-views

为我的页面实现自动保存功能。所以在一定的间隔调用动作Autosave()之后。但我的页面已经开始形式,包括部分视图。间隔调用后的代码工作正常。

<script type="text/javascript">
    window.setInterval(function () {       
        var form = $("#addpost");
        $.ajax({
            url: '@Url.Action("AutoSavePostAction", "MyControllerName")',
            data: form.serialize(),
            type: 'POST',
            success: function (data) {
                $("#Id").val(data);
            }
        });
    }, 30000); 

查看是:

@using (Html.BeginForm("SavePostAction", "MyControllerName", FormMethod.Post, new { enctype = "multipart/form-data", id="addpost" }))
{
    .................
    @Html.Partial("_TextPostPartial", Model);
    .................
}
在调用submit后

SavePostAction。在此提交中,从部分视图中获取值,这不是问题。 但在ajax调用不知何故部分视图不包括在序列化中。 这里_TextPostPartial有CKEditor,它与Model强烈绑定。 像部分视图一样:

<textarea id="Description" name="Description">@Html.Raw(Model.Description)</textarea>

编辑:

[HttpPost]
public ActionResult AutoSavePostAction(PostDTO postDTO, FormCollection postFormCollection)
{
}

[HttpPost]
[MemberFunction]
public ActionResult SavePostAction(PostDTO postDTO, FormCollection postFormCollection)
 {
 }

1 个答案:

答案 0 :(得分:1)

在序列化表单数据之前,您需要将CKEditor的值分配给输入

 window.setInterval(function () {     
    $("#Description").val(CKEDITOR.instances['Description'].getData()); // add this
    var form = $("#addpost");
    $.ajax({
        url: '@Url.Action("AutoSavePostAction", "MyControllerName")',
        data: form.serialize(),
        type: 'POST',
        success: function (data) {
            $("#Id").val(data);
        }
    });
}, 30000);