Связывание модели со списком моделей моделей с помощью сетки MvcContrib - PullRequest
1 голос
/ 20 июня 2011

Я пытаюсь привязать список объектов модели к сетке с помощью помощника MvcContrib Grid. Очевидно, что создание таблицы HTML достаточно просто, но я пытаюсь вернуть все выбранные строки (или все строки и выполнить фильтрацию через Where (x => x.Selected)).

Вот фиктивная версия того, что я имею в виду:

Модель:

public class Player
{
    [ScaffoldColumn(false)]
    public int Id { get; set; }
    public string Name { get; set; }
    public int JerseyNumber { get; set; }
    public string Position { get; set; }
    [ScaffoldColumn(false)]
    public bool Selected { get; set; }
}

Вид:

@model democode.Models.Player    
@using (Html.BeginForm())
{
    @{
    var grid = Html.Grid(Model)
               .AutoGenerateColumns()
               .Columns(c => c.For(p => Html.CheckBoxFor(_ => p.Selected)).InsertAt(0))
               .Columns(c => c.For(p => Html.HiddenFor(_ => p.Id)))
        grid.Render();
     }

     <p>
     <input type="submit" value="Submit" /> 
     </p>
}

Итак, вы смотрите на сетку хоккеистов с флажком перед каждым, позволяющим пользователю выбрать один или несколько. При нажатии кнопки «Отправить» я хотел бы, чтобы он отправил коллекцию обратно (при этом все значения, кроме «Выбрано» и «Идентификатор», будут равны нулю / по умолчанию), но я понимаю, что проблема заключается в том, что записи, встречающиеся в данных POST, имеют перекрывающиеся ключи в список пар ключ-значение. В прошлом я успешно работал над этим, написав от руки таблицу HTML и используя стратегию, которую Фил Хаак описывает здесь: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx

У меня вопрос: могу ли я сделать то же самое, используя помощника Grid из MvcContrib, или это больше, чем стоит?

...