2010-09-03 56 views
4

我是MVC的新手,即使有很多信息(並且我的意思是很多),這些信息非常有用 - 它很難得到證明了解如何使用MVC 2.0實現我的確切需求。在單獨的程序集中使用MVC 2.0和模型

我想建立一個解決方案如下:

  • 使用MVC 2.0項目提供Web UI。
  • 使用Linq to SQL類項目進行數據持久化。
  • 我有兩個單獨的代碼模塊,需要訪問上面的Linq到SQL模型 - 所以我不能直接在MVC項目本身中包含我的Linq到SQL模型。
  • 此外,我有一個業務邏輯層在我的Linq to SQL項目之前。

我的問題是:

  • 如何設置我的MVC應用程序的模型部分通過我的BLL指向我的LINQ to SQL項目?
  • 如何執行網絡應用驗證?我可以使用MVC 2.0模型驗證嗎?如果不是什麼選擇?
  • 最後(稍微放在一邊) - 什麼是ViewModel,它與模型有什麼不同?

這麼多問題。但這是一項令人興奮的新技術和數據訪問問題,我必須快速掌握所有其他內容,我認爲MVC 2.0非常棒。

感謝您提供的任何指針。

回答

4

如何設置我的 MVC應用程序的模型部分通過我的BLL指向我的LINQ到SQL 項目?

通常你會爲此使用一個存儲庫模式。你的控制器有一個對你的倉庫的引用 - 倉庫從你的數據庫返回你的域對象。 MVC應用程序沒有任何關於LINQ to SQL的知識。

如何執行Web應用驗證? 我可以使用MVC 2.0模型驗證嗎?如果 不是什麼選擇?

將視圖模型放入您的MVC項目中。這些視圖模型可能與您的領域模型緊密結合,但他們的擔心是演示模型。將數據註釋放在這些視圖模型上進行驗證 - MVC框架將自動確保在使用數據註釋裝飾的這些視圖模型上進行驗證。它是可插入的,所以你可以使用替代品 - 但與MVC 2,它的烘烤相當好,這包括客戶端驗證。

最後(略除外) - 什麼是 視圖模型以及它如何不同於模型 ?

我部分回答了上面這一個。你的領域模型的形狀可能不是你需要顯示你的視圖的形狀 - 視圖模型很好地彌補了這種差距。此外,即使形狀確實匹配 - 視圖模型仍然是一個好主意,因此您可以將UI驗證代碼和其他演示文稿元數據放在其上(因爲您不希望與您的域模型中的表示邏輯相關的任何內容) 。

這是鏈接view model patterns

希望這會有所幫助。

1
  1. 您可以添加對從BLL裝配體公開的對象的引用,並將它們用作模型。

  2. 如果要爲生成的類添加驗證,請使用buddy classes

  3. ViewModel是模型數據的自定義形狀聚合。每個View只有一個,因爲ViewModel的目的是以一種方便和簡潔的方式精確地表示特定View所需的數據。

一個示例可能是包含Order和OrderDetail信息的視圖。 ViewModel可以保存每種類型的存儲庫和業務對象的內部引用。 ViewModel的屬性將來自這些對象的數據合併在一起。

ViewModels在您的情況下也會很有用,因爲您希望您的模型位於獨立的程序集中。您可以將DataAnnotations應用於ViewModel屬性進行驗證。您將製作ViewModels的「原始」業務對象模型的內部屬性,並公開方法來檢索和保存數據。

相關問題