Я на платформе .NET, пишу MVC-приложение для регистрации посещаемости руководителей департаментов и их сотрудников.Каждый из них войдет на веб-страницу, отобразит список сотрудников в своем штате, затем отметит некоторые флажки и выберет некоторые элементы из выпадающих списков, и все они должны быть отправлены обратно на сервер.
Во-первых, у меня есть Entities:
public class Attendance
{
public DateTime Date { get; set; }
public Chief Appointed { get; set; }
public bool Present { get; set; }
public LeaveType Leave { get; set; }
public Chief Deputy { get; set; }
}
public class Department
{
public string Name { get; set; }
public int ID { get; set; }
public Chief Head { get; set; }
public Department Parent { get; set; }
public List<Department> Children { get; set; }
}
Эти объекты, хранящиеся в базе данных SQL Server, образуют хранилище, так что когда кто-либо входит на веб-страницу, Контроллер заполняет ViewModel спискомлюди только в их штате.
Этот отфильтрованный репозиторий обернут в ViewModel, который по другим причинам имеет метод конструктора:
public class ViewModel
{
public List<Attendance> Attendances { get; set; }
public List<Department> Departments { get; set; }
public ViewModel()
{
// some code
}
}
Это (часть) кода View - важное примечание: я использую эту boostrap-switch библиотеку javascript для превращения флажков в переключатели, поэтому я не могу полагаться на вспомогательные методы для элементов ввода.
@model ViewModel
@using (Html.BeginForm("Index", "Attendances", FormMethod.Post))
{
foreach (Department department in Model.Departments)
{
<script type="text/javascript">
$(document).ready(function () {
$("[id='@department.ID']").bootstrapSwitch()
});
</script>
<div>
<div>
@department.Name
</div>
</div>
<div>
<div>
@department.Head
</div>
<div>
<input type="checkbox" id="@department.ID" name="Department.ID" checked />
</div>
</div>
}
<input type="submit" value="Submit"/>
}
Теперь, вот где у меня проблемы: в контроллере у меня есть этот метод POST, который создает каждый раз новый экземпляр ViewModel.
[HttpPost]
public ActionResult Index(ViewModel viewModel)
{
// Register the submitted data
return View(viewModel);
}
Как мне сказать коду принять отправленную коллекциюпользователем в новую (пустую) коллекцию, созданную контроллером, когда пользователь нажимает кнопку отправки?
Спасибо, Davide.