I have a page where you can add a Company. A company has multiple Employees. Here are my view models:
public class CompanyViewModel
{
[ScaffoldColumn(false)]
public int CompanyId { get; set; }
public string Name{ get; set; }
public List<EmployeeViewModel> Employees { get; set; }
}
public class EmployeeViewModel
{
[ScaffoldColumn(false)]
public int EmployeeId { get; set; }
public int CompanyId { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
On my page, I have jQuery functionality to add/delete Employees dynamically. When I post my form, my view looks like this:
<input id="CompanyId" name="CompanyId" type="hidden" value="0" />
<input id="Name" name="Name" type="text" value="Test company name" />
<input id="Employees[1].FirstName" name="Employees[1].FirstName" type="text" value="fn1" />
<input id="Employees[1].LastName" name="Employees[1].LastName" type="text" value="ln1" />
<input id="Employees[2].FirstName" name="Employees[2].FirstName" type="text" value="fn2" />
<input id="Employees[2].LastName" name="Employees[2].LastName" type="text" value="ln2" />
<input id="Employees[3].FirstName" name="Employees[3].FirstName" type="text" value="fn3" />
<input id="Employees[3].LastName" name="Employees[3].LastName" type="text" value="ln3" />
And my controller method:
[HttpPost]
public ActionResult Create(CompanyViewModel viewModel)
{
...
}
When I go through the debugger to see what's in my view model after I post the form, the Employees collection is null. CompanyId and Name are passed through, but not the Employees collection.
I've also tried changing the id and name of the input from Employees[1].FirstName
to Model.Employees[1].FirstName
, but that didn't help either.
What am I doing wrong here?
I'm using MVC 3 and Razor.