2010-06-14 83 views
2

其實我只做一個主頁,只有一個名爲Index()的操作返回視圖Index.ascx。從asp.net開始MVC

此索引頁面將由最新新聞和最新註冊用戶組成,我認爲創建兩個部分視圖是最好的主意(這種方式我可以在其他視圖中使用它)。

的另一方面我有,對於得到的東西調用數據庫中的數據訪問類(得到的最新消息,讓最後用戶,等...)

我的問題很簡單,我應該打電話到該數據訪問我的HomeController的Index()動作中的類,並向ViewData中添加獲得的數據?

我認爲這個index()動作不應該是將這些數據傳遞給部分視圖的負責人,對吧?

你能幫我一下嗎?

im messing too much? ;-)

在此先感謝。

最好的問候。

何塞

回答

3

我建議你使用動作方法只能控制決定顯示內容而不是它顯示的內容。

我會說數據訪問邏輯封裝在一個更多的層,以便它從控制器動作鬆散耦合。

這導致「更薄的操作和更粗糙的模型」。您可能想要使用 in Scotts blog中描述的存儲庫模式,或者按照Domain Driven Design的說明來說明每個層的責任。

希望這會有所幫助。

感謝, 維傑

4

你應該使用Repository模式來封裝數據訪問,並從邏輯/ UI分開。 Index()方法的控制器應該訪問存儲庫並從那裏接收數據。

一個很好的學習ASP.NET MVC的教程是這樣的:NerdDinner。在那裏,也解釋了庫類的用法。

[更新]更好的教程是官方ASP.NET MVC Music Store Step-by-Step Tutorial

通過使用您訪問其他優點,如依賴注入的可能性,這是一個可測試性增強很大的倉庫......

+0

的NerdDinner確實是一個很好的開始。我也用它來熟悉asp.net mvc。 – Carra 2010-06-14 10:20:01

1

你在思考是當場它是理想的分離新聞和用戶列表你可以在其他部分重複使用它們。

將這些數據函數分離出來也是一個理想的選擇,通常稱爲資源庫類。所以你可能有一個News存儲庫類,在那裏有一個GetNews函數。然後您可以從新聞列表中調用該功能。任何你想要獲得這些列表的地方你都可以調用這個函數,而不是再次編寫相同的數據檢索代碼。