シナリオ:渡すデータ
コントローラにサブオブジェクトのリストを含むオブジェクトを渡す必要があります。
問題:
私は、オブジェクトの値ではなく、オブジェクト内のサブオブジェクトのリストの値を取得することができますよ。
コード:
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; }
}
スクリーンショット:
クロームデバッガは、すべてのデータが設定されたことを示します。
が、コントローラに、私は任意の助けをいただければ幸いですマークス
の値を取得していませんよ。ありがとうございました。
ありがとう@Stephenです。完璧に動作します。ちょうど興味深い、なぜそれがGETメソッドで動作していないのですか? –
GET呼び出しには本体がなく、その値はクエリ文字列(またはルート値)から来ており、 'DefaultModelBinder'は送信するデータと一致しません(理解するために生成したURLを見てください)。 –
しかし、データが最初の段落のコメントに従って書式設定されている場合、つまり、名前がC#コードのプロパティの値にアクセスするのと同じ形式になっていれば機能します。 –