1.為什么ASP.NET需要MVC?
因為隨着網站的的數量級越來越大,原始的網站方式,這里指的是WebForm,在運行速度和維護性方面,以及代碼量上面,越來越難以滿足日益龐大的網站維護成本。代碼的重構方面也會受到限制,傳統的方式每次進入一個動態頁面都要進行一次渲染,走完一次頁面的“生命周期”。我們越來越發現,如果代碼量過多的話,有時候為了走完一次“生命周期”的話,會花費更多的時間去等待。如果我們 有這么一種思想:“所有的代碼邏輯在頁面載入的時候都處理完成“,我們顯示的東西只是處理返回后的結果,讓頁面徹底的脫離代碼邏輯就好了,那樣我們每次載入的時候,程序就沒必要考慮那么多的邏輯代碼,因為它只要改變業務模型層里的數據就行了,那樣無論數據量多么的龐大,我們只要在業務邏輯層里面處理完了就OK了,我們顯示出來的,只是模型層里不斷變化的數據,這樣就節約了頁面的數量級,總之一句話:MVC的誕生是為了適應網站不斷增長的數量級而應運而生的一種設計模式。
2.什么是MVC?
什么是MVC呢?M-Model 模型層,V:視圖層,C-控制層。下面簡述這3者的關系,由於ASP.NET引入了路由機制,我們是通過路由產生動態頁面,我們首先由路由表里面的{controller}找到控制器里對應的控制層,路由的第二個參數是{Action},第三個是可選參數,可以是形式參數,比如id=2首先來說一下模型層,模型層是直接和數據互通的,數據庫里的數據可以填充到模型層里面。控制層:控制層是寫邏輯代碼的地方,其實控制層和模型層並沒有特別區分的地方,因為模型層是控制層里邏輯代碼的一部分,我們通過一些方式可以讓模型層里面填充數據,然后在控制層里面進行一系列的計算操作,然后控制層再把計算到的結果返回給視圖層。視圖層:把控制層返回到的模型結果,填充到視圖里面去,通過一系列的RAZOR語法,進行解析生成靜態的HTML頁面,說白了,就是一個簡單的呈現結果。
其中要注意,一個ActionResult只能對應一個視圖頁面。
3.MVC的工作原理
首先通過路由確定控制層和所對應的Action以及Action對應的視圖,通過控制層里面的邏輯代碼,讓模型層里填充數據,再確定視圖層所呈現的模型,把ActionResult返回給視圖層。然后填充了數據的視圖層就會以最終的結果呈現給我們。 一次MVC的生命周期就走完了。