asp.net mvc中的对象数组数据始终为null

时间:2014-12-22 15:33:40

标签: javascript c# jquery asp.net-mvc json

我需要通过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; }

}

但条目总是为空,为什么?

4 个答案:

答案 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 },