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