У меня есть вид, в котором пользователь может выбрать любое количество клубов, выбрав checkboxex. Клубы являются собственностью основной модели с типом List <ClubModel
>.
Во время рефакторинга я начинаю с этого:
@using (Html.BeginForm())
{
<fieldset>
<legend>Voor Select clubs </legend><br />
<table>
<tr>
@for (var i = 0; i < Model.Clubs.Count; i++)
{
if (i % 3 == 0)
{
@:</tr><tr>
}
<td>
@Html.HiddenFor(model => model.Clubs[i].ClubID)
@Html.EditorFor(model => model.Clubs[i].IsAvailable)
</td>
<td>@Html.DisplayFor(model => model.Clubs[i].ClubName)</td>
}
</tr>
</table>
<input type="submit" value="Submit" />
</fieldset>
}
Это прекрасно работает: модель возвращается с заполненным свойством Клубы.
Теперь я вынимаю теги <td
> и перемещаю их в шаблон Editor:
@using (Html.BeginForm())
{
<fieldset>
<legend>Select Clubs </legend><br />
<table>
<tr>
@for (var i = 0; i < Model.Clubs.Count; i++)
{
if (i % 3 == 0)
{
@:</tr><tr>
}
@Html.EditorFor(model=>model.Clubs[i])
}
</tr>
</table>
<input type="submit" value="Submit" />
</fieldset>
}
Это все еще работает (шаблон не показан).
Теперь я тоже хочу переместить цикл на шаблон Editor:
@using (Html.BeginForm())
{
<fieldset>
<legend> Select Clubs</legend><br />
<EditorFor(model=>model.Clubs,"ListOfClubs")
<input type="submit" value="Submit" />
</fieldset>
}
Я должным образом создаю шаблон Editor с именем ListOfClubs:
@using InvallersManagementMVC3.ViewModels;
@model List<StandInClubModel>
@{
Layout = null;
}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
<tr>
@for (var i = 0; i < Model.Count; i++)
{
if (i % 3 == 0)
{
@:</tr><tr>
}
<td>
@Html.HiddenFor(model => model[i].ClubID)
@Html.EditorFor(model => model[i].IsAvailable)
</td>
<td>@Html.DisplayFor(model => model[i].ClubName)</td>
}
</tr>
</table>
</body>
</html>
Здесь правильно отображаются клубы с флажками для свойства IsAvailable, но теперь при публикации свойства клубов модель имеет значение null!
Куда я иду не так?
EDIT:
Я попытался реализовать ответ Cymen, используя:
@Html.EditorFor(model=>model.Clubs,"ClubModel")
или указание элемента шаблона при передаче списка этих элементов. Однако меня приветствует исключение:
Исключение System.InvalidOperationException не было обработано кодом пользователя
Сообщение = Элемент модели, передаваемый в словарь, имеет тип 'System.Collections.Generic.List`1 [InvallersManagementMVC3.ViewModels.ClubModel]', но для этого словаря требуется элемент модели типа 'InvallersManagementMVC3.ViewModels.ClubModel'.