ASP.NET MVC:组织ViewModel的约定

时间:2009-09-03 17:34:24

标签: asp.net-mvc conventions convention-over-configur

正如各种MVC questionsblogposts所讨论的那样,我们知道ASP.NET MVC项目布局很重要。

我盲目地在Controllers文件夹中创建了一个子目录。

这感觉不对。

alt text http://www.imagechicken.com/uploads/1252003002097179400.png

问题:在哪个目录中存储ViewModel的常见公约是什么?什么是您的建议或建议的惯例是什么?

3 个答案:

答案 0 :(得分:11)

我在“控制器和视图”旁边使用“模型”文件夹。在项目中为空的同一个(我不使用区域)。

“MVC”模型中的“M”进入单独的程序集。 Web程序集中唯一的模型是表示/编辑模型。

在Models文件夹中,通常有命名空间子文件夹。所以我有:

  

Vertex.Data(包含存储库的程序集等)

     

Vertex.Web

Controllers
  BarController
  FooController
Models
  Bar
    BarListItem
  Foo
    FooDetail
    FooListItem
Views
  Bar
  Foo
  Shared

...等

答案 1 :(得分:7)

我通常会为每个视图创建一个模型。即使它只是我可以使用的项目中某些其他对象的精确映射。这样我的视图和它所需的模型就与应用程序的其余部分分离。通过扩展视图的模型,它还可以非常轻松地向视图添加数据。

预先需要更多的工作,有时看起来像是你的复制对象,但我更喜欢分离。

我将所有视图模型存储在MVC项目中创建的模型目录中。那些'模特'一对一地映射到我的观点。如果视图模型不仅仅是基本数据持有者,我在Models文件夹中使用子文件夹。子文件夹将包含表示该视图所需的所有位和部分。

答案 2 :(得分:5)

我认为的想法是(View)模型应该放在Models目录中(当你创建一个新的ASP.NET MVC项目时它是空的。)

就个人而言,我更有意义的是围绕功能而不是机制来安排命名空间,但是虽然这对于模型没有任何影响,但在控制器和视图方面会有一些含义。