Боюсь, я не получаю никакого волшебства MVC, но исключение. Я отредактировал свой вопрос, чтобы показать его.

я есть вид, в котором пользователь может выбрать любое количество клубов, выбрав 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>
}

Это все еще работает (шаблон не показан).

Теперь я хочу переместить цикл тоже на EditorTemplate:

@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, но теперь при публикации в клубе свойство модели равно нулю!

Куда я иду не так?

РЕДАКТИРОВАТЬ: я пытался реализовать ответ Cymen с помощью:

@Html.EditorFor(model=>model.Clubs,"ClubModel") 

или указав шаблон элемента при передаче списка этих элементов. Однако меня приветствует исключение: System.InvalidOperationException не обрабатывается пользовательским кодом. Message = Элемент модели, переданный в словарь, имеет тип 'System.Collections.Generic.List`1 [InvallersManagementMVC3.ViewModels.ClubModel]', но этот словарь требуется элемент модели типа 'InvallersManagementMVC3.ViewModels.ClubModel'.

Ответы на вопрос(2)

Ваш ответ на вопрос