我应该在ASP.NET MVC项目中将类文件存储在何处?

时间:2011-02-25 16:15:56

标签: asp.net-mvc asp.net-mvc-3

我刚刚开始使用MVC并试图了解设计应用程序背后的最佳实践。在WebForms世界中,我通常只创建了一个Classes文件夹,其中存储了所有* .cs文件。但是,由于MVC使用文件夹结构创建不同命名空间的方式,我不确定再做什么是正确的。我似乎无法从微软那里找到关于这个主题的任何指导,所以我希望这里有人能指引我朝正确的方向发展。

是否有正确的方法来组织MVC应用程序中的文件?而且,更一般地说,是否有权威的地方寻找这种最佳实践指南?

3 个答案:

答案 0 :(得分:4)

这是一个示例文件夹结构:

  • 控制器
  • 模型
  • 的ViewModels
  • 映射器
  • 浏览
  • 存储库
  • 服务
  • 校验
  • ...

显然,这些层可以在不同的组件之间分开。

你也可以看一下我写的sample MVC project structure

答案 1 :(得分:2)

MVC名称空间不指示应保留类的位置。但是,如果按照类别将它们存储在适当的位置,这很有意义。例如如果它是控制器类,您将它存储在Controllers文件夹中。如果是ViewModel,则将其存储在ViewModel文件夹中。

话虽如此,我相信您所说的类是您用于业务逻辑的实体。如果是这种情况,如果应用程序足够大并且您手动创建普通旧CLR对象(PO​​CO),则可能希望将它们存储在单独的类库中。这与您在webforms世界中所做的相同。

如果它不是一个大型应用程序,或者您正在使用ORM生成的实体(如LINQ或Entity Framework生成的实体),而不是显式创建它们,您可能希望包含.DBML(LINQ)或.EDMX(实体框架) Model文件夹中的文件。然后,实体将位于Model文件夹中自动生成的设计器文件中。

希望这有帮助。

答案 2 :(得分:0)

Mvc中唯一的特殊文件夹是Views文件夹(以及Areas文件夹,但这是一个高级主题)框架定位视图文件。您的源代码文件可以进入任意位置。但是,Darin列出的结构是一个有用的约定,可以帮助处理同一项目的不同开发人员快速找到他们想要的内容

您也可以使用Empty项目模板开始一个新项目(它实际上并不是空的),它将为您创建基本的推荐文件夹结构。