นี่คือฟังก์ชัน Java Script ที่ถูกเรียกเมื่อผู้ใช้คลิกเพิ่มลงในตะกร้า ฉันกำลังทดสอบการโทร Ajax ก่อนที่จะใส่ตรรกะทั้งหมดเพื่อสร้างค่าที่ถูกต้องจากแบบฟอร์มของฉัน (ตอนนี้เขียนโค้ดยากมาก)
function AddItem() {
var myproduct = { Id: 1, Price: 17, ProductName:"product name" }
var cartItem = { Quantity: 1, Product: myproduct };
$.ajax({
url: "/Cart/AddItem",
type: 'post',
data: cartItem,
success: function (data) {
if (data.IsSuccess) {
alert("test Hello Success");
}
alert("test HELLO Fail");
},
error: function (jqXHR, textStatus, errorThrown) {
alert(errorThrown + "- Error");
}
});
}
ปัญหาคือเมื่อทดสอบ Java Script นี้ พารามิเตอร์ที่พิมพ์อย่างเข้มงวดของฉันภายในการกระทำของคอนโทรลเลอร์ของฉันมีค่าที่ตั้งไว้เพียงบางส่วนเท่านั้น การกระทำของคอนโทรลเลอร์ของฉันมีลักษณะดังนี้:
[HttpPost]
public JsonResult AddItem(CartItem cartItem)
{
cartItem.Cart = cartService.GetCartCurrent(this);
cartService.SaveCartItem(cartItem);
//bla bla bla
}
คำนิยามรายการรถเข็นมีลักษณะดังนี้:
[Serializable]
public class CartItem
{
[Key]
public int Id { get; set; }
public virtual Product Product { get; set; }
public virtual List<SelectedProductOption> SelectedProductOptions { get; set; }
public virtual Cart Cart { get; set; }
public int Quantity { get; set; }
}
ดังนั้นเมื่อฉันตั้งค่าจุดพัก CartItem.Quaintity = 1 แต่ CartItem.Product ไม่ใช่ NULL แต่ค่าสำหรับ Product.Id = 0 และ Product.Price คือ 0
ทำไม??
คุณจะตั้งค่าวัตถุภายในของโมเดลที่ซับซ้อนได้อย่างไร
มีความคิดอะไรบ้าง?