你如何命名你的ViewModel类?

什么样的命名约定适合ViewModel类?

示例:对于HomeController,索引视图? HomeIndexViewModel似乎不对。

EmployeesViewData。

这就是我使用的以及我在示例应用程序中看到的内容。

关于您添加的示例: Imho类的名称应指定它包含的数据类型。 “…… IndexViewData”毫无意义。 该页面上显示的内容究竟是什么? 尝试用1或2个单词对其进行总结,并在其后面添加“ViewData”。

或者只是取控制器的名称并删除“索引”。 HomeViewData听起来不错。

我使用以下模式,因为它清晰明确:

  • 型号:Foo
  • 查看:FooView
  • ViewModel:FooViewModel

我试着让我的演示模型名称与他们将要呈现的演示类型无关。 我最初可能会将我的模型对象用于ASP.NET视图,但稍后我也可以在WCF或WinForms应用程序中使用它。 我尝试命名我的模型,使它们在逻辑上描述它们包含的内容,而不是用“ViewData”,“ViewModel”,“Model”等混淆它们。

例子:

ProductsWithPageInfo ProductWithAttributesAndTags ClientAndBillingDetail UserAccountWithAssociatedGroups 

等等。

我更喜欢HomeViewModel,或者使用之前的员工示例,CreateEmployeeViewModel,EditEmployeeViewModel等。我们的想法是“ViewModel”强调我们正在处理表示问题,并从您可能拥有的任何域模型对象中消除ViewModels的歧义。 。

我一直在使用术语Envelope作为我名字的一部分,我在阅读Wrox书的第1章之前不久就开始使用它,并发现更常被接受的术语是ViewModel。

但是,我创建的这些ViewEnvelopes只用于非常简单的封装,当我有两个或更多(通常是不相关的)强类型模型时,我想交给我的View。 它们包含任何其他function—信封只是作为这种意义上的传递机制,而对我来说,ViewModel这个术语对我如何使用它似乎不太具有描述性,而且对于它的含义也可能更加含糊不清真正的目的是。

例如,我可能会创建一个CustomerUpdateEnvelope类,该类仅用于传递Customer对象和不相关的NewsTicker对象,例如,我的Customer Update视图。

对于这个特定的线程来说相当晚,但我在博客文章中写了一些关于ViewModel命名约定的更详细的建议,这可能对其他人有用。