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

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<StudentRecord>[...]
于 2013-10-03T13:48:10.107 に答える