我有一个有两个对象的模型,一个是带有验证和属性的类来描述一个新员工,第二个是可能需要授予新员工的可能访问列表。如何在包含列表的mvc 2中创建表单?
public class EmployeeViewModel
{
public NewEmployee.Models.EmployeeModel Employee { get; set; }
public IList<RequestedAccessViewModel> AvailibleAccesses { get; set; }
}
public partial class EmployeeModel
{
public DateTime DateRequested { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Initials { get; set; }
public string UserName { get; set; }
public string Department { get; set; }
public string RequestedLocation { get; set; }
public string CubicleNumber { get; set; }
public string Supervisor { get; set; }
public DateTime StartDate { get; set; }
public string EmployeeJobFunction { get; set; }
public int Id { get; set; }
}
public class RequestedAccessViewModel
{
public string Description { get; set; }
public bool Requested { get; set; }
public string Comments { get; set; }
public int Id { get; set; }
}
我的控制器看起来是这样的,刚刚创建了一个新的实例,并创建列表条目,有的拖欠员工的属性值。
[HttpGet]
public ActionResult Create()
{
return View(EmployeeViewModel.NewEmployee());
}
视图看起来像这样:
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<% Html.RenderPartial("CreateEmployeeData", Model.Employee); %>
<%
foreach (var access in Model.AvailibleAccesses)
{
Html.RenderPartial("CreateRequestedAccessViewModel", access);
}
%>
<input type="submit" value="Create" />
<%}%>
形式渲染确定,我看到的雇员数据的局部视图,并且为12的局部视图访问列表。不幸的是,当创建按钮被点击并且页面发布时,模型会返回空属性。
[HttpPost]
public ActionResult Create(EmployeeViewModel model)
{
// "model" is not null, but it's two properties are!
}
如果你看的Request.Form,它看起来像这样:
DateRequested=2%2f22%2f2011+12%3a47%3a22+PM&
FirstName=&
LastName=&
Initials=&
UserName=&
Department=&
RequestedLocation=&
CubicleNumber=&
Supervisor=asawyer&
StartDate=2%2f25%2f2011+12%3a47%3a22+PM&
EmployeeJobFunction=&
Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&Id=0&
Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&Requested=false&
Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=&Comments=
这是很显然这是不是这样做的方法。那么我的问题是,创建这种表单的正确方法是什么?
我的尝试是否有缺陷,应该报废并重新开始?
花了一段时间来研究细节,但现在它正常工作,再次感谢Darin。 – asawyer 2011-02-23 16:01:48