为我的页面实现自动保存功能。所以在一定的间隔调用动作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)
{
}
答案 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);