[英]Passing data in ajax post issue
場景:
需要將包含子對象列表的對象傳遞給控制器。
問題 :
我能夠獲取對象的值,但不能獲取對象內的子對象列表的值。
代碼:
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
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; }
}
截圖:
Chrome調試器顯示已設置的所有數據。
但在控制器中,我沒有得到馬克斯的價值
任何幫助,將不勝感激。 謝謝。
您需要對數據進行字符串化,並設置contentType
並type
ajax選項(請注意,它必須是POST,否則您需要使用帶有點表示法的完全限定屬性名稱以不同方式生成數據 - 例如{ Id: 1, .... , 'Marks[0].Subject': 'Maths', 'Marks[0].Mark': 80, ... }
,在這種情況下,你現有的ajax代碼無需修改即可工作)
var student = {
....
};
$.ajax({
url: '@Url.Action("Receive", "Home")',
data: JSON.stringify({ student: student }, // stringify
type: 'POST', // add
contentType: "application/json; charset=utf-8", //add
success: function (data) {
alert("done");
},
....
});
請注意,您的方法返回一個視圖,但您沒有對該視圖執行任何操作。 如果您的目的是使用該視圖更新DOM,那么該方法應該return PartialView( ... );
並在ajax成功回調中,
success: function (data) {
$(someElement).html(data);
},
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.