我是一个新的ASP学习者。净MVC。我查阅了一些书籍和代码示例。当我学习的时候,我提出了下面的问题,但我不能清楚地理解下面的观点。
大多数书籍解释说,将Models放在Models
文件夹中是一种优于配置的约定。他们还指出,ASP。. NET MVC框架假定开发人员将模型放在该文件夹中。然而,大多数代码示例和许多其他开发人员将模型放在Models
以外的文件夹中,例如ViewModels
在单独的类库项目中(即Services
项目)。
这两种方式有什么不同吗?有什么ASP吗?. NET MVC与模型,如果我们把它们放在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; }
}