Asd*_*dfg 6 c# architecture asp.net-mvc
我正试图搞定MVC.我来自ASP.Net背景.
在创建新的mvc 3应用程序后,我在同一个webapp项目下获得了Controller,Models和views.在ASP.Net中,我们通常为模型和控制器创建单独的项目(我假设它们与业务层相同).我还为DAL创建了一个单独的项目,我将使用EF.
我很困惑,因为这是理想的解决方案结构?我们不应该为每一层创建单独的项目吗?由于我创建了DAL作为一个单独的项目,我不得不在其中添加WebApp的引用,因为我想从DAL返回Model,因此我现在无法将DAL的引用添加到我的WebApp中.
请问有人可以解释我在这里失踪的内容吗?我做得不对吗?
MVC确实将"M"部分留给了开发人员.
即使在他们的官方示例中,您也会看到变化.您的问题暴露了一个关于MVC的最常见的误解.您不应将域或数据模型直接绑定到视图,也不应将控制器方法接受为参数.关于过度和不足的帖子,请参阅此帖子.
理想情况下,您的控制器将调用DAL,并且某些机制会将这些数据或域模型映射到View模型.正是那些View模型 - 专门用于促进UI的模型 - 应存在于WebApp"Models"文件夹中.
所以,你肯定是在正确的轨道上创建一个新的程序集来包含你的DAL.映射到ViewModel的"最简单"机制之一是每个ViewModel上的一个简单方法:
public class MyWidgetFormModel()
{
public string Name { get; set; }
public string Price { get; set; }
public MapFromDAL(DAL.Widget widget)
{
this.Name = widget.Name;
this.Price = widget.Price;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:根据您的评论,这是一个关于一个用户的项目布局的优秀答案.