ASP.NET MVC - 强类型视图模型,它属于哪里?

时间:2010-02-25 01:03:08

标签: asp.net-mvc model-view-controller viewmodel

我正在尝试创建一个强类型视图模型,John Sheehan建议here。它应该去哪里?我可以为模型,视图和控制器自己辩论。

4 个答案:

答案 0 :(得分:4)

它应该放在Web应用程序的“Models”目录中。根据定义,ViewModel 特定于一个或多个视图,因此属于Web应用程序,而不是核心。

可以在使用它们的控制器中定义它们,但这不能扩展。与在视图代码中定义类相同。即使每个文件一个类意味着更多文件,它也更容易找到代码并且更容易维护。

我经常为每个控制器创建一个子文件夹,所以我最终得到了像 Web.Models.Foo.BarViewModel 这样的东西。

答案 1 :(得分:3)

如果将它们放在PresentationModel目录中的Domain项目中,并且像@Seth Pretry-Johnson那样,我将它们放在单独的Controller目录中。

这是我项目的整体结构:

  • 网站项目
    • 控制器
    • 浏览
    • Etc
  • 域项目
    • 模型
    • 存储库
      • 摘要
    • 服务
      • 摘要
    • PresentationModels
      • 主页
      • 用户
  • DataAccess项目
    • 存储库
HTHs(并没有提出更多问题.. ;-),
查尔斯

答案 2 :(得分:0)

我将实际的模型类放在Models文件夹中。

/Controllers
/Models
    /Entities
    /Mappings
    /ValueTypes
    /ViewModels

这样的事情。我是Fluent NHibernate的忠实粉丝。

答案 3 :(得分:0)

它可以去任何你想去的地方,为什么你需要有人告诉你在哪里上课?

很多人都有错误的想法,除非你把你的课程放在按功能分组的某个特定目录中,否则一切都行不通。对于其他框架可能也是如此,但是对于ASP.NET MVC,情况并非如此。代码编译为程序集。