Построение динамического списка в MVC5.Форма будет отправлена на контроллер, и я вижу, что StudentList правильно заполнен в инструментах разработчика Chrome, но в контроллере StudentList пуст.
Модель:
public class Student
{
public int id { get; set; }
public string Name { get; set; }
}
public class StudentViewModel
{
public Student student { get; set; }
public List<Student> StudentList { get; set; }
}
Просмотр:
@model TaskTrack.ViewModels.StudentViewModel
@using (Html.BeginForm("Create", "Timesheet", FormMethod.Post, new { @id = "addTaskForm" }))
{
<div id="task-row">
//Partial view renders here.
</div>
<button class="btn save-day" type="submit" >Save Day</button>
}
Частичное представление:
@model TaskTracker.ViewModels.StudentViewModel
@using (Html.BeginCollectionItem("StudentList"))
{
<div class="form-row">
<div class="form-group col-2">
@Html.EditorFor(model => model.Student.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Student.Name, "", new { @class = "text-danger" })
</div>
</div>
}
Если я извлекаю экземпляр Student из ViewModel и заменяю его на свойства модели студента, затем изменяю частичное представление, чтобы связываться непосредственно со свойством Name,это будет работать.
@Html.EditorFor(model => model.Student.Name, new { htmlAttributes = new { @class = "form-control" } })
до
@Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
Пост контроллера:
[HttpPost]
public ActionResult Create(StudentViewModel model)
Когда я перехватываю пост до того, как он попадает в контроллер, я вижу егопривязана правильно, но в контроллере StudentList пуст.
Я пытаюсь избежать дублирования модели студента в модели представления, потому что она дублируется, и все правила проверки уже есть в модели Student, поэтому я хотел бынужно продублировать все это и в модели представления, что кажется неправильным.