【问题标题】:ASP.NET MVC - Strongly typed view model, where does it belong?ASP.NET MVC - 强类型视图模型,它属于哪里?
【发布时间】:2010-02-25 01:03:08
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    它应该位于网络应用程序的“模型”目录中。 ViewModel 根据定义特定于一个或多个视图,因此属于网络应用程序,而不是核心。

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

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

    【讨论】:

      【解决方案2】:

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

      这是我一个项目的整体结构:

      • 网站项目
        • 控制器
        • 观看次数
      • 域项目
        • 型号
        • 存储库
          • 摘要
        • 服务
          • 摘要
        • 演示模型
          • 首页
          • 用户
      • 数据访问项目
        • 存储库

      HTH(并且不会引发更多问题.. ;-),
      查尔斯

      【讨论】:

        【解决方案3】:

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

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

        类似的东西。我是 Fluent NHibernate 的忠实粉丝。

        【讨论】:

          【解决方案4】:

          它可以去任何你想去的地方,为什么你需要有人告诉你在哪里放置一个类?

          很多人有一个错误的想法,即除非您将类放在某个按功能分组的特定目录中,否则事情将无法正常工作。这对于其他框架可能是正确的,但对于 ASP.NET MVC,情况并非如此。代码被编译成程序集。

          【讨论】:

          • 我喜欢从别人的错误和困难中学习。当然它可以去任何地方,但它在哪里最有意义,并且造成的麻烦最少。
          猜你喜欢
          • 2013-04-10
          • 1970-01-01
          • 2011-05-03
          • 2011-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-10-24
          相关资源
          最近更新 更多