Редактировать представление для модели, содержащей список <T>, где T некоторый другой класс - PullRequest
0 голосов
/ 19 августа 2011

Кажется, я запутался среди бела дня:

У меня есть модель классов

public class Pilot
{
    //.. other prop-s escaped
    private List<FlightHoursEntry> FlightHours { get; set; }
}

public class FlightHoursEntry
{
    public string Description { get; set; }

    public int Hours { get; set; }
}

Представления перечислены ниже, все отображается правильно, но при обратной передачеСвойство FlightHours равно null. Почему движок неправильно инициализирует объект Pilot?

в PilotEditView, который я использую @Html.EditorFor (model => model.FlightHours)

FlightHoursCollectionView:

@model List<FlightHoursEntry>

@for (int i = 0; i < Model.Count; i++){
FlightHoursEntry fh = Model[i];
@Html.Partial("~/../FlightHoursEntryEditView.cshtml", fh);}

также я пробовал этот способ @ Html.EditorFor (model => model [i], "FlightHoursEntryEditView", fh)

и простой FlightHoursEntryEditView

@model PumaMvc.Models.BusinessObjects.Copa.FlightHoursEntry

    <div class="editor-label">
        @Html.LabelFor(model => model.Hours)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.Hours)
        @Html.ValidationMessageFor(model => model.Hours)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.Description)
    </div>
    <div class="editor-field">      
        @Html.TextAreaFor(model => model.Description)           
        @Html.ValidationMessageFor(model => model.Description)
    </div>

Ответы [ 2 ]

0 голосов
/ 19 августа 2011

Проверьте следующий пост. Действительно помог мне на пути к пониманию, как реализовать это - Возвращает список из представленной модели представления

0 голосов
/ 19 августа 2011

Поле помечено private. Я подозреваю, что поле должно быть общедоступным, чтобы MVC ModelBinder связывал с ним входящие значения.

РЕДАКТИРОВАТЬ:

Если вышеописанное не работает:

Также проверьте это: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx В блогах Фила о том, как связать модель со списком сложных объектов, вам нужно будет изменить редактор класса FlightHoursEntry, чтобы он отображался так, как показано там. Просто отобразите значение i в квадратных скобках в конечном HTML.

Там также есть пример, но пост немного устарел, и везде используется MVC2.

...