我已经尝试了几乎所有方法来使用ajax将表单发送回我的 Controller 。
我已将模型简化为字符串。
- ajax 正在正确提取所有表单数据。
- 我也有 serilaizeArray() 。
我的名为 model 的对象每次都是 null(其他参数映射得很好,即页面、排序...)。 我错过了什么?
Ajax :
...
var model = $('#advancesearchform').serialize();
var request = $.ajax({
type: "POST",
url: "/DAM/Home/_ImageSearchResult",
cache: false,
traditional: true,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({
page: page,
itemsperpage: itemsperpage,
sort: sort,
sortdir: sortdir,
model: model
}),
success: function (data) {
$('#imagesearchresults').html(data);
}
});
JSON.stringfy:
{\"page\":null,\"itemsperpage\":8,\"sort\":\"Project\",\"sortdir\":\"ASC\",\"model\":\"文件名=123&OriginalFileName=sas&Height=asas&Width=asas&DepartmentId=9b4463cd-c184-e211-9244-005056887208&ClassId=28de9d15-c284-e211-9244-005056887208\"}
Controller :
[HttpPost]
public PartialViewResult _ImageSearchResult(int? page, int itemsperpage, string sort, string sortdir, AdvanceSearchFilters model)
{
}
型号:
public class AdvanceSearchFilters
{
public string FileName { get; set; }
public string OriginalFormat { get; set; }
public string Width { get; set; }
public string Height { get; set; }
public string MediaSource { get; set; }
public string DepartmentId { get; set; }
public string ClassId { get; set; }
public string ThemeId { get; set; }
}
最佳答案
问题在于您发送的数据格式不正确。 当您调用 $('#advancesearchform').serialize(); 时数据被格式化为查询字符串,但您告诉 ajax 发送 JSON。有了这个:
{
"page":null,
"itemsperpage":8,
"sort":"Project",
"sortdir":"ASC",
"model":"FileName=123&OriginalFileName=sas&Height=asas&Width=asas&DepartmentId=9b4463cd- c184-e211-9244-005056887208&ClassId=28de9d15-c284-e211-9244-005056887208"
}
您正在将“model”作为字符串发送。您需要做的是将 advancesearchform 属性转换为 json 格式并将它们附加到当前的 JSON,或者将所有内容作为查询字符串发送。
对于第一个,快速解决方案是
$.ajax({
type: "POST",
url: "/DAM/Home/_ImageSearchResult",
cache: false,
traditional: true,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({
page: page,
itemsperpage: itemsperpage,
sort: sort,
sortdir: sortdir,
model: {
FileName: $("#FileName").val(),
OriginalFormat: $("#OriginalFormat").val()
and so on...
对于第二个,你可以做类似的事情
$.ajax({
type: "POST",
url: "/DAM/Home/_ImageSearchResult",
data: $('#advancesearchform').serialize() + "&page=" + page + "&itemsperpage=" + itemsperpage + "&sort=" + sort + "&sortdir=" +sortdir
关于jquery - MVC4 表单序列化到 Controller 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15491139/