2013-10-03 60 views
1

這裏是JSON代碼張貼該數組GETBULK方法:如何提交JSON陣列到數據庫表在ASP.Net MVC4

$("#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

你忘了把你的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>所以負載應該是這樣的:[...]
+0

應該不是數據是'JSON.stringify({機型:arrary} )'所以模型聯編程序將能夠匹配action方法參數和來自reque的值ST? – asymptoticFault

+0

@Darin非常感謝我的工作......我可以收到你的郵件,以便我可以在那裏問我的問題 –