最佳的ViewModel命名约定是什么?

19

我正在编写一个包含许多视图/部分视图的asp.net mvc2项目。通过学习良好的MVC实践,我被鼓励创建ViewModels, 这真的很不错,也很有意义。但是,我最近注意到自己无法轻松记住哪个模型适用于哪个视图。我希望有一种可适用于大型项目的ViewModels 命名约定。

我的问题是,这种情况能否得到改善?


1
我在博客文章中写了一些稍微详细的建议,关于ViewModel命名规范,可能会有所帮助。 - Appetere
5个回答

20

我喜欢保持简单,例如,如果你有一个名为Folder的对象:

视图 = "FolderView.xaml"

视图模型 = "FolderViewModel.cs"


2
对于 ASP.NET MVC,我将我的视图模型保存在 ViewModels.{Controller} 命名空间中,类名只是 {Action}。就像视图文件没有 View 后缀一样,我不使用 ViewModel 后缀。

2

简单明了:

ModelName = ViewName + "Model";

如果您有模型层次结构,有时需要将模型从视图传递到局部视图。在这种情况下,可以放宽上述规则。

2
如果您将视图模型保存在与视图相同的程序集中,除了使用简单的命名方案(例如{View Name}ViewModel)来为视图模型类命名之外,我使用的一个技巧是执行以下操作以帮助组织具有视图模型的视图:
  1. 创建您的视图类(Shell.xaml)
  2. 在相同位置添加您的视图模型类(ShellViewModel.cs)
  3. 将视图模型类文件重命名为与视图相同的名称,但将文件路径附加为“.model”(Shell.model.cs)
  4. 编辑项目文件(手动或使用VS中的Power Command扩展)
  5. 在项目XML文档中查找视图模型类的Compile元素
  6. 添加一个名为DependentUpon的子元素,其内容为视图类的名称
  7. 保存更改并重新加载项目
这将使视图模型类在视图的代码后台文件旁边被可视地分组。

alt text


这看起来很有趣,但我不确定它是否被认为是良好的实践方法。我很想听听其他人对此的想法。 - Joshua Hayes
它有助于通过视图与代码后台链接视图来进行视觉组织视图模型。我认为最佳实践涉及是否应该将视图模型放在与视图不同的类库中,这取决于您的重用和测试方案。在某些项目中,我将视图模型放在另一个库中,但在更简单的项目中,我将它们放在与视图相同的项目中。 - Oppositional
1
这很有趣,但它与viewmodel可以被多个视图使用的事实不太匹配。此外,分组文件通常是部分类,而viewmodel不应该是部分类。 - Alex Maker

0

我已经开始更进一步地指定一个 ViewModel 是否用于通过以 Form 结尾的名称生成表单。 这有助于保持表单与简单显示模型的易识别性。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接