你如何命名你的ViewModel类?

时间:2009-06-02 21:22:36

标签: c# asp.net-mvc model-view-controller

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

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

6 个答案:

答案 0 :(得分:23)

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

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

答案 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的更详细的建议,这可能对其他人有用。