一、MVC模式
一、概述
1、MVC是一種流行的Web應用架構技術,他把Web應用划分成Model(模型)、Controller(控制器)和View(視圖)三部分。
2、優點:可測試、可維護
3、MVC是ASP.NET技術的子級(ASP.NET MVC),ASP.NET包括:ASP.NET WebForm和ASP.NET MVC。
二、MVC簡介
1、MVC是什么
MVC是一種軟件架構設計模式,針對具備人機交互功能的軟件和程序。
2、執行順序
控制器接收網頁發送的請求,如果需要請求數據,先從Model里面取出數據,然后再交給View展示。
3、Web開發的本質
Web開發的本質流程:請求->處理->響應,WebForm方式不貼近web開發的本質。
三、創建ASP.NET MVC步驟
1、創建ASP.NET MVC項目。
文件->新建->項目->Web項目,根據需要選擇相應版本的ASP.NET MVC應用程序,點擊“確定”:
2、在項目模板選擇界面,選擇相應的模板和視圖引擎,點擊確定,新建一個ASP.NET MVC應用程序:
3、創建Controller控制器。
本示例以VS2012為開發工具,創建的MVC4應用程序,需要創建控制器才可以運行(VS2013或以上版本已經默認創建了控制器,直接就可以運行)。
在Controllers文件夾上面點擊右鍵->添加->控制器:
輸入控制器的名稱(控制器的名稱約定以Controller結尾),選擇模板,點擊添加:
4、創建視圖。
在控制器代碼界面,在方法名稱上面點擊右鍵:選擇“添加視圖”:
在添加視圖選項卡界面,輸入視圖名稱,視圖名稱必須和方法的名稱保持一致,選擇視圖引擎,點添加:
在Views文件夾里面會看到新添加的視圖:
四、ASP.NET MVC項目結構
新創建的MVC應用程序結構如圖所示:
1、Content文件夾
存放資源文件,例如Css文件、第三方插件等。
2、Controllers文件夾
存放MVC應用程序相關的控制器文件。
3、Models文件夾
存放除了Controller和View以外的文件。
注意:與三層結構的Models不同,MVC里的Models里面可以放實體類、數據訪問類和業務類等。
4、Scripts文件夾
存放各種腳本文件。
5、Views文件夾
存放View文件。
6、Shared文件夾
Shared文件夾位於Views文件夾里面,任何控制器中找不到的視圖都會去Shared文件夾下面找。
7、Web.Config
存放配置信息。
8、Global.asax
Global.asax存放應用程序啟動時要執行的代碼。
五、代碼詳解
1、Global.asax—應用程序啟動注冊路由
當對網站發出請求時,應用程序是如何把請求引到對應的控制器及里面的Action方法
答:首先網站一啟動,會提前加載根據控制器和Action方法設置的路由規則,這樣一請求,路由就會分析之后把請求引到對應的控制器和Action方法。
RouteConfig類位於App_Start文件夾下面。
2、控制器
1)根據前面的解析,每次請求都是先定位控制器,然后再根據路由規則找到對應的Action方法!
2)但是在路由表里,我們只寫了Home,但是MVC框架約定,控制器都是以Controller結尾,並繼承了基類Controller!
3)在這里Index方法返回值類型是ActionResult,方法名和路由注冊的方法名一致,在Index方法內,調用了View方法並且返回,這是一個重載的方法,可以給個參數,作為返回視圖的名稱,如果沒有參數,默認就是以當前Action命名的視圖。
4)也就是Asp.netMVC架構,不像Java的MVC通過配置來建立關系,他是約定大於配置。
3、視圖
1)視圖里的代碼類似於之前的ASPX里面的代碼,主要是HTML、JS和CSS等前端技術構成,從MVC1.0到MVC5.0變化很大,Razor語法越來越完善,強大!
4、向視圖傳遞數據
1)傳統的WebForm方式,前置頁面類和后置代碼類是繼承的關系,可以直接進行數據傳遞。
2)MVC模式下,視圖和控制器是完全分離的,通過專用渠道傳遞數據,ViewData是在控制器和視圖之間傳遞數據的容器之一。
5、ASP.NET MVC執行順序
六、Model和三層架構
1、MVC與三層架構之間有沒有區別?
1)MVC和三層架構沒有必然的關系,架構的思想是不一樣的。
2)三層架構強調的是物理分離(多個項目構成),MVC強調的是邏輯分離(一個項目構成)。
3)MVC中也可以體現三層架構。
4)有些MVC企業框架為了方便管理,會故意把Models做分層設計。
注意:在MVC中如果它不屬於View也不屬於Controller,那么就把它歸到Model中。
七、MVC和ASP.NET
1、ASP.NET MVC和ASP.NET
(1)ASP.NET MVC是ASP.NET技術的子集。
(2)ASP.NET MVC是在核心ASP.NET基礎之上構建
1.依賴於HttpHandler,如請求是如何進入控制器的
2.依賴於Session、Cookie、Cache、Applaction等狀態保持機制
3.使用HttpContext、Request、Response、Server等對象
4.在Controller使用智能感知很容易得到這些對象
(3)ASP.NET MVC是.NET中編寫WEB程序的一種可選方式
1.WebForms技術是另外一種可選方式
2、MVC和WebForms
(1)WebForms的特色
1)所見即所得,開發傻瓜化
1.服務器端控件
2.事件模型
3.狀態管理
2)借鑒Winforms的成功特色
3)偏離了Web請求處理的原理
(2)Asp.net MVC的特色
1)關注分離
1.WebForm只是把一個頁面分成了前置頁面和后置代碼,不夠徹底
2.MVC可以把一個頁分成三塊,分得更徹底
2)可測試性
3)開發更接近WEB的本質
4)對開發人員的技術水平要求更高