将模型放在models以外的文件夹中有什么问题?

本文关键字:文件夹 什么 问题 模型 models | 更新日期: 2023-09-27 18:18:52

我是一个新的ASP学习者。净MVC。我查阅了一些书籍和代码示例。当我学习的时候,我提出了下面的问题,但我不能清楚地理解下面的观点。

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

这两种方式有什么不同吗?有什么ASP吗?. NET MVC与模型,如果我们把它们放在Models文件夹?它们的优点和缺点是什么?你的项目做得怎么样?

将模型放在models以外的文件夹中有什么问题?

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

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

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

然而,因为你只是在学习MVC,那么你可能值得把时间花在如何构建小型MVC应用程序上,而不是如何构建它们,然后再集中精力在这方面。

也看看这个链接,它可能会在以后的ASP中派上用场。. NET MVC -分离大型应用

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

视图模型模式通常提供灵活性,如果你愿意,可以提供一种依赖的继承/混淆。

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

。域模型

 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; }
 }