MVC3 การเชื่อมโยงอัตโนมัติกับรายการวัตถุ JSON ไม่ทำงานสำหรับคุณสมบัติ

ฉันมีอาร์เรย์ของออบเจ็กต์ 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 ในรายการที่ถูกต้องได้ แต่การ์ดในคุณสมบัติของรายการว่างเปล่า

ป้อนคำอธิบายรูปภาพที่นี่

หากคุณติดอยู่จนจบขอบคุณ! ความช่วยเหลือใด ๆ จะดีมาก!


person Wil    schedule 30.01.2012    source แหล่งที่มา


คำตอบ (1)


อ๊ะ! หลังจากใช้เวลาทั้งสุดสัปดาห์กับเรื่องนี้และในที่สุดก็โพสต์ใน SO เมื่อวานนี้ ฉันก็พบปัญหาของฉันแล้ว!

Jquery ของฉัน ฉันมีวงเล็บเหลี่ยมพิเศษรอบวัตถุของฉันเมื่อฉันเพิ่มมันผ่าน onclick การถอดวงเล็บเหลี่ยมช่วยแก้ปัญหาของฉันได้

jQuery(".AddCardLink").click(function () {
            var card = **[**{
                Id: jQuery(this).attr("cardid"),
                Name: jQuery(this).attr("cardname")
            }**]**;
            transaction.adds.push(card);
        })
person Wil    schedule 31.01.2012