簡體   English   中英

如何為mvc項目設置架構

[英]How to setup architecture for mvc project

我正試圖搞定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;
   }
}

更新 :根據您的評論, 這是一個關於一個用戶的項目布局的優秀答案

當我開始使用MVC時,我遵循Jeffrey Palermo洋蔥架構。 你可以閱讀它:

這里: http//jeffreypalermo.com/blog/the-onion-architecture-part-1/

這里: http//jeffreypalermo.com/blog/the-onion-architecture-part-2/

在這里: http//jeffreypalermo.com/blog/the-onion-architecture-part-3/

它使用IoC支持解耦服務。 我認為您應該考慮使用IoC容器,因為MVC架構被認為是使用IoC來解耦服務(層)的模式。

您還可以使用洋蔥架構從http://codecampserver.codeplex.com/下載工作樣本。

它不是唯一可以與MVC一起使用的架構,但它是一個非常好的起點和了解IoC以及在MVC應用程序中解耦的地方。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM