ฉันมีอาร์เรย์ของออบเจ็กต์ JSON ที่ฉันโพสต์ไปยังคอนโทรลเลอร์ MVC3 ดูเหมือนว่า JSON จะโพสต์ได้ดีตามการตรวจสอบพู้ทำเล่นที่ฉันดำเนินการ (รวมอยู่ด้านล่าง) คอนโทรลเลอร์ยอมรับคลาสที่กำหนดเองที่ฉันตั้งค่าเพื่อรับข้อมูล JSON ดูเหมือนว่าจะทำงานได้ดีเช่นกัน (ภาพหน้าจอของดีบักเกอร์รวมอยู่ด้านล่าง) ปัญหาคือคุณสมบัติของวัตถุดูเหมือนจะไม่เชื่อมโยงอัตโนมัติอย่างที่ฉันคาดหวัง ชื่อตรงกันทั้งหมด ฉันไม่แน่ใจปัญหา
jquery อยู่ด้านล่าง (คลิกแรกเพื่อเพิ่มในอาร์เรย์ จากนั้นคลิกเพื่อโพสต์ข้อมูล)
var removes = [];
var adds = [];
var transaction = {
'adds': adds,
'removes': removes
};
jQuery(".AddCardLink").click(function () {
var card = [{
Id: jQuery(this).attr("cardid"),
Name: jQuery(this).attr("cardname")
}];
transaction.adds.push(card);
})
jQuery("#btnSave").click(function () {
jQuery.ajax({
type: "POST",
url: "/SaveTransactionLog",
data: JSON.stringify(transaction),
dataType: "json",
contentType: "application/json",
success: function (data) {
alert("Test");
}
});
});
นี่คือมุมมองพู้ทำเล่นของข้อมูลที่ส่ง
คลาสและคอนโทรลเลอร์แบบกำหนดเองอยู่ด้านล่าง:
public class Card
{
public int Id { get; set; }
public string Name { get; set; }
}
public class JsonTransaction
{
public List<Card> Adds { get; set; }
public List<Card> Removes { get; set; }
}
[HttpPost]
public JsonResult SaveTransactionLog(JsonTransaction transaction)
{
return Json()
}
สุดท้าย นี่คือการดูดีบักเกอร์ที่ JsonTransaction คุณสามารถดูการตั้งค่า autobind ในรายการที่ถูกต้องได้ แต่การ์ดในคุณสมบัติของรายการว่างเปล่า
หากคุณติดอยู่จนจบขอบคุณ! ความช่วยเหลือใด ๆ จะดีมาก!