2009-05-03 178 views
7

在我見過的所有MVC Diagrams中,視圖和模型之間始終存在連接,表明視圖可以訪問模型。ASP.net MVC - 視圖如何訪問模型?

我只是想知道:這適用於什麼時候?目前,我有我的Controller Action從QueryString中獲取參數,查詢Model以獲取MyObjectViewData,然後返回一個View,傳入MyObjectViewData。所以基本上我有兩者之間的控制器。

這似乎是合乎邏輯的方法,但它不符合模型和視圖業務一起的假設。

什麼是他們沒有控制器交互的典型情況?

回答

6

在MVC中(在Web上),View通過呈現Model實體的特定實例直接與模型進行交互。它僅通過控制器間接作用於模型。在非web實現中,您可以使用觀察者模式向處理程序註冊View元素,這些元素可能會調用模型中用於更新模型而無需Controller交互的方法。 ASP.NET MVC和其他基於Web的實現比非Web實現更鬆散耦合。在我看來,這是一件好事。它傾向於使控制器實現更加豐富,並且您需要小心以保持Controller與Model之間的關注點分離。

Web實現可能應該在沒有從Model到View的間接連接的情況下繪製,因爲如果沒有Controller,那麼您無法在兩者之間進行真正的通信。我想有人可能會爭辯說一個Web服務可以提供這種連接,但我認爲它只是Controller的另一種形式。