У меня есть модель с двумя объектами, один - это класс с проверками и свойствами для описания нового сотрудника, второй - список возможных прав доступа, которые, возможно, потребуется предоставить новому сотруднику.
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=
Это довольно очевидноэто не способ сделать это.Тогда мой вопрос: как правильно создать такую форму?
Является ли моя попытка настолько ошибочной, что ее следует отменить и начать заново?