我有一個有兩個對象的模型,一個是帶有驗證和屬性的類來描述一個新員工,第二個是可能需要授予新員工的可能訪問列表。如何在包含列表的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