Параметры DRYing MVC helper

1

Представьте себе представление MVC, содержащее сетку:

@{
    Html.Grid(
        autoGenerateColumn: false,
        Url : "/Grid/GetData",
        columnBuilderAction: p =>
        {
            p.Add(c => c.Name, "100");
            p.Add(c => c.Code, "100").AlignCenter();
        }    
   );
}

URL-адрес указывает действие, которое возвращает массив json, содержит данные для заполнения сетки. Очевидно, что "/Grid/GetData" должно возвращать только свойство Name и Code для человека, но у человека больше свойств.

Это нарушение DRY, если мы указали эти свойства в действии GetData

Это займет больше трафика, если мы передадим эти свойства от клиента (с запросом Ajax сетки) к действию

Это не красиво (на мой взгляд!), Если эти свойства определяют в контроллере, переходят с ViewData в сетку и совместно используют действие GetData

Это лучшая практика или подходящая практика!

Теги:
asp.net-mvc
dry

1 ответ

0

В контроллере вы определяете, какое представление должно показывать (или в вашем случае информацию, передаваемую в представление).

В этом случае... у вас есть контрольные Persons и действие индекса. В представлении "Индекс"... вы настраиваете свою сетку.

Итак... для меня отлично подходит для предоставления подмножества свойств Person, только для представления. Помните, что вы должны отправлять VIEWMODELS в представления, а не в модели домена. Итак, в этом случае... если вам просто нужно имя и код... вы можете создать класс QuickPerson с этими свойствами... и в вашем запросе базы данных выполните:

  .Select(x => new QuickPerson(){ Code = x.Code, Name = x.Name})

Не уверен, что если columnBuilderAction может обнаружить автоматически Недвижимость Болгария Недвижимость избежать этого.

Что произойдет, если вы не установите columnBuilder? Если он использует все общедоступные свойства модели... тогда вы просто решили проблему, так как ваша новая модель QuickPerson имеет только необходимые.

  • 0
    Проблема с QuickPerson заключается в фильтрации и сортировке, columnBuilder строит столбцы сетки и поле фильтра, после чего наш механизм запросов автоматически добавляет необходимую фильтрацию и сортировку к запросу. но механизм запросов ничего не знает о QuickPerson, он работает только с сущностями.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню