Метод POST для элементов в коллекции - PullRequest
0 голосов
/ 02 января 2019

Я на платформе .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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...