我需要通过json向asp.net mvc 2发送一个对象数组,但是我没有在mvc控制器中获取null
对象就像这样
entries[1].date = "12/22/2014"
entries[1].Ref = "0002"
entries[1].Credit = "100"
entries[2].date = "12/22/2014"
entries[2].Ref = "0002"
entries[2].Credit = "150"
发送之前,我这样做
JSON.stringify(entries)
我在Json的数据看起来像这样
[{"date":"12/22/2014","RefNo":"0002","Credit":"100"},{"date":"12/22/2014","RefNo":"0002","Credit":"150"}]
我在asp.net方法中的控制器看起来像这样
[HttpPost]
public ActionResult Save(MyDataModel[] entries)
{
}
和我的jquery发送代码
$.ajax({ // create an AJAX call...
type: 'post', // GET or POST
url: url, // the file to call
dataType: 'json',
data: JSON.stringify(entries), // get the form da
})
MyDataModel是一个具有条目属性
的模型类更多数据
public class MyDataModel
{
public string Date { get; set; }
[Required(ErrorMessage = "RefNo is required", AllowEmptyStrings = false)]
[StringLength(40, ErrorMessage = "RefNo Must be Under 40 characters long", MinimumLength = 1)]
public string RefNo { get; set; }
// Credit
[Required(ErrorMessage = "Credit is required", AllowEmptyStrings = false)]
[Range(typeof(Decimal), "1", "999999999999", ErrorMessage = "Credit Must be a number and non zero")]
public decimal? Credit { get; set; }
}
但条目总是为空,为什么?
答案 0 :(得分:1)
stringify后你的JSON看起来不正确吗?
[
{"date":"12/22/2014","RefNo":"0002","Credit":"100"},
{"date":"12/22/2014","RefNo":"0002","Credit":"150"
缺少关闭括号..可能只是一个问题错误,但我想我会告诉你,可能有所帮助!
答案 1 :(得分:1)
$.ajax({ // create an AJAX call...
type: 'post', // GET or POST
url: url, // the file to call
contentType: 'application/json; charset=utf-8', // Include ContentType
dataType: 'json',
data: JSON.stringify(entries), // get the form da
})
您必须包含contentType,然后才能使用。
答案 2 :(得分:1)
也许您需要将contentType包含在ajax调用中,如果这不起作用,您可以尝试这种方式:
data: JSON.stringify({"entries" : entries})
其中引号中的条目是控制器上的参数,而没有引号的条目是您的对象。并在你的控制器
[HttpPost]
public ActionResult Save(List<MyDatAModel> entries)
{
}
您正在发布一个复杂的对象,因此您的模型列表将接收您的数组并添加所有元素。
UPDATE 试试这个表格(这是我使用的许多ajax请求的一个例子)也许它可以帮助。
$.ajax({
type: 'POST',
url: '@Url.Action("Action", "Controller")',
data: JSON.stringify(arrayJavascript),
dataType: 'json',
contentType: 'application/json; charset=utf-8',
success: function () {
//code...
}
});
答案 3 :(得分:0)
变化
data: JSON.stringify(entries), // get the form da
到
data: { entries : entries },