什么样的命名约定适合ViewModel类?
示例:对于HomeController,索引视图? HomeIndexViewModel似乎不对。
答案 0 :(得分:23)
我使用以下模式,因为它清晰明确:
答案 1 :(得分:2)
EmployeesViewData。
这就是我使用的以及我在示例应用程序中看到的内容。
关于您添加的示例: Imho类的名称应指定它包含的数据类型。 “...... IndexViewData”毫无意义。该页面上显示的内容究竟是什么?尝试用1或2个字汇总它,并在其后添加“ViewData”。
或者只是取控制器的名称并删除“索引”。 HomeViewData听起来不错。
答案 2 :(得分:1)
我尽量让我的演示模型名称与他们将要呈现的演示类型无关。我最初可能会将我的模型对象用于ASP.NET视图,但稍后我也可以在WCF或WinForms应用程序中使用它。我尝试命名我的模型,以便他们逻辑地描述它们包含的内容,而不会使用“ViewData”,“ViewModel”,“Model”等混淆它们。
示例:
ProductsWithPageInfo
ProductWithAttributesAndTags
ClientAndBillingDetail
UserAccountWithAssociatedGroups
等
答案 3 :(得分:0)
我更喜欢HomeViewModel,或者使用之前的员工示例,CreateEmployeeViewModel,EditEmployeeViewModel等。我们的想法是“ViewModel”强调我们正在处理表示问题,并从任何域模型对象中消除ViewModel的歧义。你可能有。
答案 4 :(得分:0)
我一直在使用术语Envelope作为我名字的一部分,我在阅读Wrox书的第1章之前不久就开始使用它,并发现更常用的术语是ViewModel。
然而,我创建的这些ViewEnvelopes仅用于非常简单的封装,当我有两个或更多(通常不相关的)强类型模型时,我想将其交给我的View。他们不包含任何其他功能---信封只是作为这种意义上的传递机制,而对我来说,术语ViewModel似乎不太像我使用它的描述,而且关于它的真正目的可能更加含糊不清。
我可能会创建一个CustomerUpdateEnvelope类,该类仅用于传递Customer对象和不相关的NewsTicker对象,例如,我的Customer Update视图。
答案 5 :(得分:0)
对于这个特定的帖子来说已经相当晚了,但我在博客文章中写了一些关于ViewModel naming conventions的更详细的建议,这可能对其他人有用。