2009-09-04 52 views
9

我是新手。我想問一下關於分離問題的MVC模型。我已經閱讀了一些MVC教程,但我還沒有完全理解每個Model,View和Controller的角色。MVC - 分離問題

例如說我正在爲用戶編寫一個應用程序來監視投資組合。我希望登陸頁面根據不同的標準顯示投資清單,例如可以根據投資額列出投資,另一個可以根據投資業績進行排序。

我的問題是,根據設計模式,我應該在哪裏編寫生成列表的邏輯;在模型,視圖還是控制器中?

另外任何asp.net MVC示例演示分離的擔憂是非常感謝。

在此先感謝你們。

回答

4

冒着重複自己的風險,我會告訴你我給出的答案in this threadThe entire thread可能是值得你花時間的,就像Stack Overflow上的其他幾十個人一樣。

要打破它簡單地說:

控制器 - 控制應用程序的流程,使有關數據決定。

模型 - 執行業務邏輯。

瀏覽次數 - 生成輸出。

對於您的特定情況,您將希望在查看圖層中生成您的列表。使用模板創建您的列表結構,並使用從模型層獲取的數據填充它們。

我不是一個asp.net程序員,所以我不能給你一個可靠的例子,但要尋找其他SO線程。

1

MVC模式「需要」您將所有「業務邏輯」插入到模型中。模型用於訪問數據庫並獲取數據,並以一種只需使用控制器將其分配給View的方式進行模型化。

一個圖形化的例子:http://www.bhartisoftland.com/technologies-skill-sets/gifs/mvc-php.png

不用說或許,你可以繞過使用的模型和寫在控制器的所有你的邏輯,但這樣會導致非常廣泛,可能是多餘的代碼量。通過使用控制器,您可以調用模型和視圖,只需幾行代碼就可以將信息從一個地方交換到另一個。

3

不錯的問題,這是主觀的,有很多解決方案,它歸結於我認爲的環境和個人的喜好。

隨着MVC的ASP.Net實現,很多人都談論模型更像是一個ViewModel而不是一個模型,就像其他一些框架(有些DTO)一樣。考慮到這一點,將Controller視爲應用程序流程的協調者,在通過某種類型的服務訪問的附加層中生成列表並不會產生錯誤。您將向該服務請求一組符合指定標準的ViewModel,並讓該額外層擔心這些標準的生成方式。通過這種方式,所有控制器需要知道的事情是將一些標準傳遞給服務併爲視圖提供一組模型(視圖模型)來顯示,該視圖不會做出關於如何處理其提供的數據的任何決定,而且這些模型很不錯,很輕便。

希望這個解釋是有道理的,如果人們不同意我可以批評...