簡體   English   中英

MVC架構控制流程

[英]MVC architecture control flow

我有點困惑,這三個組件-模型,視圖,控制器-在MVC體系結構中如何相互影響。 有時我感覺我知道MVC的工作原理,有時我感覺我不知道它的內部工作正常。

我對MVC架構的了解是-

  1. 控制器是否攔截用戶請求,是否為URL
    請求或用戶在頁面上引發的任何事件。
  2. 然后,控制器處理用戶輸入並與模型對話。
  3. 模型准備數據並將其發送回控制器。
  4. 最后,控制器將數據移回視圖並顯示給用戶。

在我看來,View從不直接與模型對話。 視圖和模型之間的交互將僅由Controller處理。

到現在為止還挺好!

但是當我看到如下圖時,我會感到困惑。 在下圖中,左箭頭表示View組件也可以與Model組件進行交互。

在此處輸入圖片說明

同樣在代碼項目文章中,還寫道:“控制器和視圖都可以訪問模型”和“視圖可以使用模型顯示數據”。

因此,請澄清是僅控制器可以訪問模型還是控制器和視圖都可以訪問模型。 如果第二個也是正確的,那么在什么情況下這是可能的。 我使用ASP.NET MVC Framework,在這里任何交互都是通過控制器對象完成的。 我從未遇到視圖直接與模型對象對話的情況。

有MVC(該模式)和MVC(由Microsoft開發並以該模式混亂地命名)的Web應用程序框架,因此最好將兩者分開討論。

在MVC模式中,您將找到以下內容:

  • 模型-包含應用程序的所有業務邏輯,包括有關如何通過數據庫查詢或其他方法“構建”自身的邏輯。
  • 視圖-為UI提供模型的表示形式
  • 控制器-將模型連接到視圖

在MVC中,Web應用程序框架:

  • 模型-沒有一個。 更適當地,該模型可能是一個或多個實體類,一個DAL層和一個或多個視圖模型的某種組合。
  • 視圖-與MVC差不多,模式
  • 控制器-將模型連接到視圖,但還要承擔更多責任。 可能負責從數據庫中查詢實體,映射到視圖模型,為視圖創建組件等。

盡管名稱如此,MVC框架僅松散地實現了MVC模式。 但是,在這兩種模型中,控制器和視圖都可以訪問模型,因此您對模型的基本理解存在缺陷。 但是,對於MVC框架,您可以說視圖只能訪問視圖模型。 由於MVC框架中的“模型”不僅僅是一件事,因此視圖不應訪問某些組成部分,即:DAL層和潛在的實體,除非實體作為視圖模型承擔雙重責任,也一樣

如果視圖是任何模型的強類型輸入,那么我們可以說

查看=>模型

如果視圖不是用模型強類型化的,那么我們可以說

控制器=>模型=>視圖

暫無
暫無

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

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