【发布时间】:2014-04-21 14:28:57
【问题描述】:
我有两节课。一个包含另一个类的列表:
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
public List<Models.Occupation> Occupations { get; set; }
第二类如下
public string Name { get; set; }
public string Industry { get; set; }
我的控制器渲染视图
Person p = new Person()
{
Name = "megan",
Surname = "du Preez",
Id = 0,
Age = 22
};
return View(p);
在视图中
@model Models.Person
<form id="person">
<div>
@Html.TextBoxFor(mp => mp.Name)
@Html.TextBoxFor(mp => mp.Surname)
@(Html.Kendo().Grid<Models.Occupation>()
.Name("Occupations")
.Columns(columns =>
{
columns.Bound(e => e.Name);
columns.Bound(e => e.Industry);
})
)
.DataSource(dataSource => dataSource
.Ajax()
.Read(read => read.Action("Occupations_Read", "People", new { Name = Model.Name}))
)
</div>
@Html.Kendo().Button().Name("btnTest").Content("Create")
这样读人的职业如下
List<Models.Occupation> oc = new List<Models.Occupation>();
oc.Add(new Models.Occupation() { CategoryName = "Lecturer" });
oc.Add(new Models.Occupation() { CategoryName = "Student" });
oc.Add(new Models.Occupation() { CategoryName = "Janitor" });
return Json(oc.ToDataSourceResult(request));
所有这些都呈现了我的视图并且一切正常,但是在表单帖子上我想将所有内容发送回操作
[HttpPost]
public JsonResult PersonPost(Models.Person p)
{
//do stuff
}
我可以使用以下 javascript 轻松发布此人的姓名和姓氏
$("#btnTest").click(function (e) {
e.preventDefault();
$.ajax({
url: "/Tasks/PersonPost",
type: 'POST',
data: $('#person').serialize(),
dataType: 'json',
success: function (data) {
}
});
});
但网格中的职业不会被序列化并回发到控制器动作中。
我的问题是如何将带有职业列表的整个模型从视图发布到控制器。
【问题讨论】:
标签: javascript asp.net-mvc kendo-ui grid