【发布时间】:2009-08-28 21:29:41
【问题描述】:
默认的 ASP.NET MVC 项目设置了一个“模型”目录,我不知道我曾在我从事的少数 MVC 项目中使用过该目录。通常,我有一个单独的“库”项目来存储业务逻辑类。
现在我很好奇:没有利用默认的 ASP.NET“模型”目录,我是否错过了一些重要的东西?是否有一些内置功能可以很好地使用它? p>
【问题讨论】:
标签: asp.net asp.net-mvc models
默认的 ASP.NET MVC 项目设置了一个“模型”目录,我不知道我曾在我从事的少数 MVC 项目中使用过该目录。通常,我有一个单独的“库”项目来存储业务逻辑类。
现在我很好奇:没有利用默认的 ASP.NET“模型”目录,我是否错过了一些重要的东西?是否有一些内置功能可以很好地使用它? p>
【问题讨论】:
标签: asp.net asp.net-mvc models
我通常将此目录用于我的视图模型。领域模型存在于单独的项目/程序集中,但视图模型与 Web 项目一起保存在 Models 目录中。将模型添加到此目录会自动将它们设置在 *.Models 命名空间中。
【讨论】:
你没有错过任何东西。在我看来,创建该文件夹的唯一原因仅仅是因为它是 ASP.NET MVC,并且他们需要用于“M”、“V”和“C”的文件夹。默认情况下,ASP.NET MVC 不会告诉您如何实现“M”,因此它只会为您提供一个空白文件夹作为放置模型类的建议。您可以随意删除此文件夹并将模型放在您想要的位置。
【讨论】:
文件夹本身没有“特殊”功能,而只是关于将模型类(即数据类,例如生成的 ORM (LINQ))保存在何处的建议。
示例类是客户、地址、订单等,它们对基础数据实体进行建模。
【讨论】:
由于我通常将模型保存在单独的项目/程序集中,因此我使用 Models 文件夹来存储特定于 UI 的类,例如,如果我有一个同时显示 Widget 和 Foosit 的视图,我只是换行将它们放在 WidgetFoositContext 对象中。
public class WidgetFoositContext {
public Widget Widget { get; }
public Foosit Foosit { get; }
}
【讨论】:
我使用模型目录来存储我的业务对象的组合。如果您在产品控制器中,我将创建一个 ProductViewData 类来存储产品本身以及推荐产品列表和该产品的评论列表。
我更喜欢让我的业务对象保持非常简单,并且模型目录是我可以将我认为需要的不同形式的数据组合在一起的地方。
【讨论】: