1

这是将该数组发布到 GetBulk 方法的 JSON 代码:

$("#button").click(function () {
    var array = [
        {
            StudentRecordId: 1,
            Name: "Amit",
            Marks: 11,
            Grade: "A"
        },
        {
            StudentRecordId: 2,
            Name: "Abhishek",
            Marks: 12,
            Grade: "A"
        },
        {
            StudentRecordId: 3,
            Name: "Vipin",
            Marks: 13,
            Grade: "A"
        }
    ]

    $.ajax({
        type: "Post",
        url: "/Home/GetBulk",
        dataType: "json",
        traditional:true,
        data: JSON.stringify({ data: array }),
        traditional: true,//"feedGraphId=10696",
        success: function (result) {
            alert("j= " + result.studentRecord);                 
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert("error" + errorThrown);
        }
    });
});                

这是我的控制器的方法:

//to recieve array from json and post values to student record table
public JsonResult GetBulk(List<StudentRecord> models)
{
    StudentRecord studentRecords = new StudentRecord();

    foreach(var item in models)
    {
        studentRecords.Name = item.Name;
        studentRecords.Marks = item.Marks;
        studentRecords.Grade = item.Grade;
        db.StudentRecords.Add(studentRecords);
        db.SaveChanges();
    }

    var c = db.StudentRecords.ToList();
    return Json(models, JsonRequestBehavior.AllowGet);
}

这是我的模型:

public class StudentRecord
{
    public long StudentRecordId { get; set; }
    public string Name { get; set; }
    public int Marks { get; set; }
    public string Grade { get; set; }
}

那么如何使用这个 json 数组将我的值提交到表中呢?

4

1 回答 1

4

您忘记设置contentTypeAJAX 请求并且还发送了不正确的 JSON 有效负载(您的服务器需要一个数组,但您将它作为对象发送:){"data":[...]}

$.ajax({
    type: 'POST',
    url: '/Home/GetBulk',
    contentType: 'application/json',
    data: JSON.stringify(array),
    success: function (result) {
        alert("j= " + result.studentRecord);
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert("error" + errorThrown);
    }
});

您可能会在我的代码中注意到的其他内容:

  • 摆脱了dataType: 'json'-> 如果服务器设置了正确的 Content-Type 响应标头(如果您返回 Json 结果,它将是不必要的)。在这种情况下,jQuery 将使用这个响应头来知道如何处理响应数据
  • 摆脱了traditional: true参数->当您发送 JSON 请求时它没用,这就是您在这里所做的
  • 替换JSON.stringify({ data: array })JSON.stringify(array)因为第一个您的数据将像这样发送:{ "data": [...] }而您的服务器需要一个List<StudentRecord>,因此有效负载应如下所示:[...]
于 2013-10-03T13:48:10.107 回答