【问题标题】:how to submit JSON Array to Database Table in ASP.Net MVC4如何在 ASP.Net MVC4 中将 JSON 数组提交到数据库表
【发布时间】:2013-10-03 13:42:38
【问题描述】:

这是将该数组发布到 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 数组将我的值提交到表中呢?

【问题讨论】:

    标签: arrays json asp.net-mvc-4 multidimensional-array


    【解决方案1】:

    您忘记设置 AJAX 请求的 contentType 并且还发送了错误的 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&lt;StudentRecord&gt;,因此有效负载应如下所示:[...]

    【讨论】:

    • 数据不应该是JSON.stringify({ models: arrary }),以便模型绑定器能够将操作方法​​参数与请求中的值匹配吗?
    • @Darin 非常感谢它为我所做的工作...我可以有你的邮件以便我可以在那里问我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-07
    • 1970-01-01
    相关资源
    最近更新 更多