Как сначала отобразить свойства базового класса модели представления при использовании ViewData.ModelMetadata.Properties для универсального представления редактирования - PullRequest
0 голосов
/ 05 мая 2010

Когда я использую ViewData.ModelMetadata.Properties для того, чтобы зациклить свойства (с дополнительным Where(modelMetadata => modelMetadata.ShowForEdit && !ViewData.TemplateInfo.Visited(modelMetadata))) и таким образом создать общий вид редактирования, свойства базового класса модели представления отображаются последними.

Можно ли использовать умный OrderBy () или есть другой способ сначала получить свойства базового класса, а затем подкласса '?

Reverse не сработает, так как порядок свойств каждого класса в порядке.

Обходным решением, конечно, может быть композиция + делегирование, но поскольку у нас нет миксинов, слишком уж СУХОЕ ИМХО, почему я ищу лучшее решение, если это возможно.

Ответы [ 2 ]

0 голосов
/ 18 мая 2010

Я пошел с другим решением, которое не использует наследование.

Дело в том; на основе типа, только подмножество свойств должно быть редактируемым.

Я решил это, определив набор лямбда-выражений свойств для каждого типа.

0 голосов
/ 06 мая 2010

Глядя на ViewData.ModelMetadata.Properties Я не вижу никакой информации, показывающей, является ли свойство частью класса Model или его суперкласса.

Один из способов - добавить атрибут в свойства суперкласса. Если это атрибут «DisplayMeAtTheTop», он может использоваться и другими свойствами, которые должны быть сверху.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...