我试图将一个对象数组和一个int传递给一个带有jQuery Ajax帖子的Core MVC Controller。
我已经看到了很多很多这个问题的答案,但我找不到一个对我有用的答案......似乎核心MVC的使用不适用于此就像一个经典的MVC。
对象类:
public class Field : Nameable //herit of the ID and Name properties
{
public string Value { get; set; }
public Field () { }
}
MVC控制器功能:
[HttpPost]
public JsonResult SaveFields(List<Field> fields, int id)
{
return Json(new { success = true, responseText = "OK" });
}
jQuery函数:
$('#btnSaveFields').click(function () {
var $rows = $('#table').find('tr:not(:hidden)');
var data = [];
var id = 1;
// Turn all existing rows into a loopable array
$rows.each(function () {
var $td = $(this).find('td');
var obj = new Object();
obj.ID = $td.eq(0).children().attr('value');
obj.Name = $td.eq(0).text().trim();
obj.Value= $td.eq(1).text();
data.push(obj);
});
data.shift(); // don't take the headers row
console.log(data[0]); //seems ok
var fields = JSON.stringify({ 'fields': data });
$.ajax({
contentType: 'application/json; charset=utf-8',
dataType: 'json',
url: '@Url.Action("SaveFields")',
//traditional: true, //don't work or wrong use ?
type: 'POST',
data: {
'fields': fields,
'id' : id
},
success: function (response) {
console.log('ok')
},
error: {
console.log('nok')
}
});
});
MVC控制器函数的调用有效但参数为null。你知道我做错了什么吗?
答案 0 :(得分:0)
我找到了解决问题的方法!
我的拼写错误只是一个错误。 contentType的'C'必须是大写的。
答案:
$.ajax({
url: '@Url.Action("SaveFields")',
ContentType: 'application/json',
dataType: 'json',
type: 'POST',
data: { fields: data, id: id },
success: function (response) {
console.log('OK')
},
error: function (){
console.log('NOK');
}
});