Представьте себе представление 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
Это лучшая практика или подходящая практика!
В контроллере вы определяете, какое представление должно показывать (или в вашем случае информацию, передаваемую в представление).
В этом случае... у вас есть контрольные Persons
и действие индекса. В представлении "Индекс"... вы настраиваете свою сетку.
Итак... для меня отлично подходит для предоставления подмножества свойств Person, только для представления. Помните, что вы должны отправлять VIEWMODELS в представления, а не в модели домена. Итак, в этом случае... если вам просто нужно имя и код... вы можете создать класс QuickPerson
с этими свойствами... и в вашем запросе базы данных выполните:
.Select(x => new QuickPerson(){ Code = x.Code, Name = x.Name})
Не уверен, что если columnBuilderAction
может обнаружить автоматически Недвижимость Болгария Недвижимость избежать этого.
Что произойдет, если вы не установите columnBuilder? Если он использует все общедоступные свойства модели... тогда вы просто решили проблему, так как ваша новая модель QuickPerson
имеет только необходимые.