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