3

我是 ASP.NET MVC 的新手。我浏览了几本书和代码示例。当我学习时,我提出了以下问题,无法清楚地理解以下要点。

大多数书籍都解释说,将模型放在Models文件夹中是一种约定优于配置。他们还声明 ASP.NET MVC 框架假定开发人员将模型放在该文件夹中。但是,大多数代码示例和许多其他开发人员将模型放在 以外的文件夹中Models,例如ViewModels在单独的类库项目(即Services项目)中。

这两种方式有什么区别吗?如果我们将模型放在Models文件夹中,ASP.NET MVC 对模型有什么作用吗?他们有什么好的和坏的?你如何为你的项目做?

4

3 回答 3

4

大多数书籍都解释说,将模型放在模型文件夹中是一种约定优于配置。他们还声明 ASP.NET MVC 框架假定开发人员将模型放在该文件夹中。

这是错误的。唯一一次 asp.net-mvc 使用文件夹结构并需要其配置(显式或按约定)是在查找视图时。控制器具有以“控制器”后缀结尾的约定,而模型则没有。您可以随意将模型放置在您喜欢的任何位置。

于 2013-06-17T08:00:50.913 回答
2

您不需要将模型添加到 Visual Studio 设置附带的模型文件夹中,这仅用于基本设置。您甚至不需要同一个项目中的模型,您可以将它们移动到不同的类库中,这在更大规模的应用程序中很常见。

但是,由于您只是在学习 MVC,因此可能值得将时间花在如何构建小型 MVC 应用程序上,而不是如何构建它们,然后再专注于这方面。

也看看这个链接,它稍后可能会在ASP.NET MVC 上派上用场 - 分离大型应用程序

于 2013-06-17T08:25:35.367 回答
1

模型是域对象的一种数据库表示,它是应用程序模型的表示,例如摩托车......但是呈现摩托车的视图可能希望显示更多关于摩托车的信息,而不是由域对象......因此出现了视图模型“模式”(其中有几个),它基本上“包含”域模型......

View Model 模式通常提供灵活性,如果您愿意,可以提供一种继承/混淆的依赖关系。

物理模型文件确实可以放在任何地方,它只是一个类,需要引用才能使用。

例如领域模型

 public class Motorcycle
 {
     public string Make { get; set; }
     public string Model { get; set; }
     public int Year { get; set; }
     public string VIN { get; set; }
 }

查看模型

 public class MotorcycleViewModel
 {
     public Motorcycle Motorcycle { get; set; }
     public SelectList MakeList { get; set; }
     public SelectList ModelList { get; set; }
 }
于 2013-06-17T08:07:07.597 回答