Передаю список на частичный просмотр, и он отлично работает, он отображает все данные, но когда я сохраняю модель, List возвращает null, что мне не хватает?Partial View List возвращает null при сохранении модели
- Не обращайте внимания на объекты, я написал поддельные для примера.
этого cshtml:
@model ViewModels.StudentVM
@using (Html.BeginForm("SaveStudent", "StudentsView", FormMethod.Post}))
{
@Html.AntiForgeryToken();
<div class="row">
<span>Student name:</span>
@Html.TextBoxFor(s => s.Name)
</div>
<div>
@Html.Partial("StudentsList", Model.Students)
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn">
</div>
}
При загрузке зрения я получаю все студенты к View Model:
vm.Students = await _studentController.GetAllStudents(); // returned 20 Students.
Частичный вид:
@model IEnumerable<Entities.Students>
<table class="table-bordered">
@foreach (var item in Model)
{
<tr>
<td>
@Html.CheckBoxFor(modelItem => item.IsSelected)
</td>
<td>
@Html.DisplayFor(modelItem => item.Name)
</td>
</tr>
}
</table>
I хотел бы получить всех выбранных учеников, поэтому скажем, что я выберу 3 студентов. И затем нажмите кнопку «Сохранить». Результат: Model.Students - null, хотя я выбрал 3 ученика. Как я могу получить этих студентов?
вы не можете использовать частичный для создания элементов управления для сложного объекта, если вы не передать 'HtmlFieldPrefix' (см [этот ответ] (http://stackoverflow.com/questions/29808573/ получение самой ценности, из-а-вложенного комплексно-Ob ject-that-is-pass-to-a-partial-view/29809907 # 29809907)), но правильный подход заключается в использовании «EditorTemplate» для типа «Студенты» (см. [этот ответ] (http: // stackoverflow .com/questions/30094047/html-table-to-ado-net-datatable/30094943 # 30094943) для примера) –
И отметьте флажок по своему обыкновенному сообщению ничего значимого - вам понадобится вход для свойства ID объект «Учащиеся» –