你如何命名你的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命名约定的更详细的建议,这可能对其他人有用。