Как вы называете ваши классы ViewModel? - PullRequest
14 голосов
/ 03 июня 2009

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

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

Ответы [ 6 ]

24 голосов
/ 06 июня 2009

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

  • Модель: Foo
  • Просмотр: FooView
  • ViewModel: FooViewModel
2 голосов
/ 03 июня 2009

EmployeesViewData.

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

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

Или просто взять имя контроллера и сбросить «индекс». HomeViewData звучит хорошо для меня.

1 голос
/ 03 июня 2009

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

Примеры:

ProductsWithPageInfo
ProductWithAttributesAndTags
ClientAndBillingDetail
UserAccountWithAssociatedGroups

Etc.

0 голосов
/ 25 апреля 2012

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

0 голосов
/ 06 июня 2009

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

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

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

0 голосов
/ 03 июня 2009

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

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