Razor 在ajax Post请求MVC中未序列化部分视图
为我的页面实现自动保存功能。因此,在特定的时间间隔后,调用actionRazor 在ajax Post请求MVC中未序列化部分视图,razor,serialization,asp.net-mvc-5,partial-views,Razor,Serialization,Asp.net Mvc 5,Partial Views,为我的页面实现自动保存功能。因此,在特定的时间间隔后,调用actionAutosave()。但我的页面已经开始形成包括部分视图。间隔后调用的代码工作正常 <script type="text/javascript"> window.setInterval(function () { var form = $("#addpost"); $.ajax({ url: '@Url.Action("AutoSaveP
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);
SavePostAction
在调用submit之后。在这次提交中,从局部视图获取值不是问题。
但在ajax调用中,部分视图并没有包含在序列化中。
此处\u textppostpartial
具有与模型紧密绑定的CKEditor。
类似于局部视图,具有:
<textarea id="Description" name="Description">@Html.Raw(Model.Description)</textarea>
在序列化表单数据之前,需要将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);
是否只有
Model.Description
在AutoSavePostAction()
方法中没有绑定?酒店是否用[allowtml]
装饰?您还应该显示这两个控制器方法的签名。哦..忘记添加了。请复习这个问题。是的,仅适用于模型。说明没有显示值为什么您有FormCollection
的参数?这两种方法之间的区别在于,working具有[MemberFunction]
过滤器属性。它是做什么的?是的,是有目的的,[MemberFunction]它的会员资格。FormCollection用于一些单选按钮逻辑。我认为这与实际问题无关。[MemberFunction]
是表明这可能是个问题的签名的唯一区别。除非您的视图设计糟糕,否则不应要求使用FormCollection
。您应该调试脚本-什么是var data=form.serialize()代码>返回-它是否包含说明的名称/值对?请参阅不要浪费时间。。。有价值的;)
[HttpPost]
public ActionResult AutoSavePostAction(PostDTO postDTO, FormCollection postFormCollection)
{
}
[HttpPost]
[MemberFunction]
public ActionResult SavePostAction(PostDTO postDTO, FormCollection postFormCollection)
{
}
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);