我想將JSON數據結構傳遞給MVC(3)控制器,將JSON對象轉換爲C#對象,並綁定所有屬性。其中一個屬性是一個簡單的類型。這是基本的模型綁定,對吧?嵌套模型不綁定
這裏是我的模型:
public class Person
{
public string Name { get; set; }
public JobTitle JobTitle { get; set; }
}
public class JobTitle
{
public string Title { get; set; }
public bool IsSenior { get; set; }
}
這是我Index.cshtml頁面(這使得AJAX請求,通過其中「人」類的謝靈運匹配的JSON對象):
<div id="myDiv" style="border:1px solid #F00"></div>
<script type="text/javascript">
var person = {
Name: "Bob Smith",
JobTitle: {
Title: "Developer",
IsSenior: true
}
};
$.ajax({
url: "@Url.Action("ShowPerson", "Home")",
data: $.param(person),
success: function (response){
$("#myDiv").html(response);
},
error: function (xhr) {
$("#myDiv").html("<h1>FAIL</h1><p>" + xhr.statusText + "</p>");
}
});
</script>
而且我的HomeController看起來是這樣的:
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult ShowPerson(Person person)
{
return View(person);
}
}
忽略 「ShowPerson.cshtml」 文件現在,因爲問題發生之前,這是需要的。
在HomeController.ShowPerson操作中,「person.Name」屬性被正確綁定,並且「person.JobTitle」對象(包含「Title」和「IsSenior」屬性)被實例化,但仍具有默認值「 Title = null「和」IsSenior = false「。
我確信我已經完成了嵌套的模型綁定而沒有問題。我錯過了什麼?任何人都可以闡明爲什麼模型綁定似乎只能工作一個級別?
我已經搜索過了,而且似乎其他人在從窗體發送數據時都遇到綁定問題,所以也許我在$ .ajax()請求中丟失了某些內容?
這工作!我認爲關鍵部分是設置contentType。 –
我以前遇到過這個問題,這也是答案 - 對於成爲工具感到抱歉。再次感謝您的幫助,亞瑟! –