Подтвердить что ты не робот

Как вы называете свои классы ViewModel?

Какое соглашение об именах подходит для классов ViewModel?

Пример: для HomeController, Index view? HomeIndexViewModel не кажется правильным.

4b9b3361

Ответ 1

EmployeesViewData.

Что я использую и что я видел в примерах приложений.

О вашем добавленном примере:. Imho имя класса должно указывать, какие данные он содержит. ".... IndexViewData" довольно бессмысленна. Что именно отображается на этой странице? Попробуйте суммировать его в 1 или 2 словах и добавить "ViewData" за ним.

Или просто возьмите имя контроллера и снимите "индекс". HomeViewData отлично звучит для меня.

Ответ 2

Я использую следующий шаблон, потому что он ясен и недвусмыслен:

  • Модель: Foo
  • Вид: FooView
  • ViewModel: FooViewModel

Ответ 3

Я стараюсь, чтобы названия моей модели презентации были агностиками того вида презентации, в котором они будут представлены. Сначала я могу использовать объект модели для представления ASP.NET, но позже я также могу использовать его в приложении WCF или WinForms. Я пытаюсь назвать свои модели такими, что они логически описывают, что они содержат, без мутирования их с помощью "ViewData", "ViewModel", "Model" и т.д.

Примеры:

ProductsWithPageInfo
ProductWithAttributesAndTags
ClientAndBillingDetail
UserAccountWithAssociatedGroups

Etc.

Ответ 4

Я предпочитаю HomeViewModel или используя предыдущий пример сотрудника, CreateEmployeeViewModel, EditEmployeeViewModel и т.д. Идея заключается в том, что "ViewModel" подчеркивает тот факт, что мы имеем дело с проблемами представления и устраняет неоднозначность ViewModels из любых объектов модели домена, вы можете иметь.

Ответ 5

Я использую термин "Конверт" как часть моих имен, который я начал использовать незадолго до того, как прочитал главу 1 книги Wrox и обнаружил, что более общепринятым термином является ViewModel.

Однако эти созданные ViewEnvelopемы предназначены только для очень простой инкапсуляции, когда у меня есть две или более (типично не связанные) сильно типизированные модели, которые я хотел бы передать моему представлению. Они не содержат каких-либо других функций: конверт предназначен только в качестве механизма доставки в этом смысле, тогда как термин ViewModel для меня кажется менее описательным для того, как я его использую, а также, возможно, более двусмысленным относительно того, что его реальная цель есть.

Я мог бы создать, например, класс CustomerUpdateEnvelope, который существует исключительно для доставки объекта Customer и несвязанного объекта NewsTicker, например, в мое окно "Обновление клиента".

Ответ 6

Скорее поздно для этой темы, но я написал несколько несколько более подробных предложений о соглашениях об именах ViewModel в сообщении в блоге, в котором могут быть полезны для других.