关于c#:你如何命名你的ViewModel类?

How do you name your ViewModel classes?

哪种命名约定适用于ViewModel类?

例如:对于homecontroller,索引视图?homeIndexViewModel似乎不正确。


我使用下面的模式,因为它清晰明了:

  • 模型:FO
  • 视图:FooVIEW
  • 视图模型:FooviewModel


员工视图数据。

这就是我所使用的,也是我在示例应用程序中看到的。

关于您添加的示例:imho类的名称应指定它包含的数据类型。"….indexviewdata"毫无意义。那个页面上到底显示了什么?试着用1或2个词来总结,并在后面添加"viewdata"。

否则,只需取下控制器的名称并删除"索引"。我觉得homeviewdata不错。


我试图让我的演示模型名称与他们将要演示的演示类型保持不可知。最初我可以将我的模型对象用于ASP.NET视图,但稍后我也可以在WCF或WinForms应用程序中使用它。我试着给我的模型命名,这样它们就可以逻辑地描述它们包含的内容,而不会用"viewdata"、"viewmodel"、"model"等混淆它们。

实例:

1
2
3
4
ProductsWithPageInfo
ProductWithAttributesAndTags
ClientAndBillingDetail
UserAccountWithAssociatedGroups

等。


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


我一直在使用信封这个词作为我名字的一部分,在我阅读Wrox书的第1章并发现更普遍接受的术语是viewModel之前不久我就开始使用它了。

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

例如,我可以创建一个CustomerUpdateEnvelope类,它只存在于向我的客户更新视图传递一个客户对象和一个不相关的NewsTicker对象。


我更喜欢homeviewModel,或者使用前面的雇员示例createMemployeeViewModel、editeEmployeeViewModel等。其思想是"viewModel"强调我们正在处理表示问题的事实,并从您可能拥有的任何域模型对象中消除viewModel的歧义。