Kịch bản:dữ liệu Passing trong ajax bài vấn đề
Cần phải vượt qua một đối tượng, trong đó có một danh sách các đối tượng phụ với bộ điều khiển.
Vấn đề:
tôi có thể nhận được giá trị của đối tượng nhưng không phải là giá trị của danh sách các đối tượng phụ bên trong đối tượng.
Code:
index.cshtml
function sendData() {
var student = {
Id: 1,
Name: "xxx",
Marks: [{
Subject: "Maths",
Mark:80
},
{
Subject: "Science",
Mark: 75
}]
}
$.ajax({
url: '@Url.Action("Receive", "Home")',
data: student,
success: function (data) {
alert("done");
},
error: function (error) {
alert('error For details refer console log');
console.log(error);
}
});
}
HomeController.cs
public ActionResult Receive(Student student)
{
ViewBag.Message = "Your contact page.";
return View();
}
Student.cs
01.public class Student
{
public int Id { get; set; }
public string Name { get; set; }
public List<Marks> Marks { get; set; }
}
public class Marks
{
public string Subject { get; set; }
public decimal Mark { get; set; }
}
Ảnh chụp màn hình:
debugger Chrome sẽ hiển thị tất cả các dữ liệu đã được thiết lập.
nhưng trong điều khiển tôi không nhận được giá trị của Marks
giúp đỡ Bất kỳ sẽ được đánh giá. Cảm ơn bạn.
Cảm ơn @Stephen. Hoạt động hoàn hảo. Chỉ tò mò, Tại sao nó không hoạt động trong phương thức GET? –
Vì lệnh gọi GET không có phần thân và các giá trị đến từ chuỗi truy vấn (hoặc giá trị tuyến đường) và 'DefaultModelBinder' không thể khớp với dữ liệu bạn gửi (xem url bạn tạo để hiểu). –
Nhưng nó sẽ hoạt động nếu dữ liệu được định dạng theo nhận xét trong đoạn đầu tiên - tức là các tên có cùng định dạng mà bạn sẽ sử dụng để truy cập giá trị của thuộc tính trong mã C# của bạn. –