ASP.NET?MVC框架簡(jiǎn)介
一、MVC模式
概述
1、MVC是一種流行的Web應(yīng)用架構(gòu)技術(shù),他把Web應(yīng)用劃分成Model(模型)、Controller(控制器)和View(視圖)三部分。
2、優(yōu)點(diǎn):可測(cè)試、可維護(hù)
3、MVC是ASP.NET技術(shù)的子級(jí)(ASP.NET MVC),ASP.NET包括:ASP.NET WebForm和ASP.NET MVC。
二、MVC簡(jiǎn)介
1、MVC是什么
MVC是一種軟件架構(gòu)設(shè)計(jì)模式,針對(duì)具備人機(jī)交互功能的軟件和程序。
2、執(zhí)行順序
控制器接收網(wǎng)頁(yè)發(fā)送的請(qǐng)求,如果需要請(qǐng)求數(shù)據(jù),先從Model里面取出數(shù)據(jù),然后再交給View展示。
3、Web開(kāi)發(fā)的本質(zhì)
Web開(kāi)發(fā)的本質(zhì)流程:請(qǐng)求->處理->響應(yīng),WebForm方式不貼近web開(kāi)發(fā)的本質(zhì)。
三、創(chuàng)建ASP.NET MVC步驟
1、創(chuàng)建ASP.NET MVC項(xiàng)目。
文件->新建->項(xiàng)目->Web項(xiàng)目,根據(jù)需要選擇相應(yīng)版本的ASP.NET MVC應(yīng)用程序,點(diǎn)擊“確定”:
2、在項(xiàng)目模板選擇界面,選擇相應(yīng)的模板和視圖引擎,點(diǎn)擊確定,新建一個(gè)ASP.NET MVC應(yīng)用程序:
3、創(chuàng)建Controller控制器。
本示例以VS2012為開(kāi)發(fā)工具,創(chuàng)建的MVC4應(yīng)用程序,需要?jiǎng)?chuàng)建控制器才可以運(yùn)行(VS2013或以上版本已經(jīng)默認(rèn)創(chuàng)建了控制器,直接就可以運(yùn)行)。
在Controllers文件夾上面點(diǎn)擊右鍵->添加->控制器:
輸入控制器的名稱(chēng)(控制器的名稱(chēng)約定以Controller結(jié)尾),選擇模板,點(diǎn)擊添加:
4、創(chuàng)建視圖。
在控制器代碼界面,在方法名稱(chēng)上面點(diǎn)擊右鍵:選擇“添加視圖”:
在添加視圖選項(xiàng)卡界面,輸入視圖名稱(chēng),視圖名稱(chēng)必須和方法的名稱(chēng)保持一致,選擇視圖引擎,點(diǎn)添加:
在Views文件夾里面會(huì)看到新添加的視圖:
四、ASP.NET MVC項(xiàng)目結(jié)構(gòu)
新創(chuàng)建的MVC應(yīng)用程序結(jié)構(gòu)如圖所示:
1、Content文件夾
存放資源文件,例如Css文件、第三方插件等。
2、Controllers文件夾
存放MVC應(yīng)用程序相關(guān)的控制器文件。
3、Models文件夾
存放除了Controller和View以外的文件。
注意:與三層結(jié)構(gòu)的Models不同,MVC里的Models里面可以放實(shí)體類(lèi)、數(shù)據(jù)訪問(wèn)類(lèi)和業(yè)務(wù)類(lèi)等。
4、Scripts文件夾
存放各種腳本文件。
5、Views文件夾
存放View文件。
6、Shared文件夾
Shared文件夾位于Views文件夾里面,任何控制器中找不到的視圖都會(huì)去Shared文件夾下面找。
7、Web.Config
存放配置信息。
8、Global.asax
Global.asax存放應(yīng)用程序啟動(dòng)時(shí)要執(zhí)行的代碼。
五、代碼詳解
1、Global.asax—應(yīng)用程序啟動(dòng)注冊(cè)路由
當(dāng)對(duì)網(wǎng)站發(fā)出請(qǐng)求時(shí),應(yīng)用程序是如何把請(qǐng)求引到對(duì)應(yīng)的控制器及里面的Action方法
答:首先網(wǎng)站一啟動(dòng),會(huì)提前加載根據(jù)控制器和Action方法設(shè)置的路由規(guī)則,這樣一請(qǐng)求,路由就會(huì)分析之后把請(qǐng)求引到對(duì)應(yīng)的控制器和Action方法。
RouteConfig類(lèi)位于App_Start文件夾下面。
2、控制器
- 1)根據(jù)前面的解析,每次請(qǐng)求都是先定位控制器,然后再根據(jù)路由規(guī)則找到對(duì)應(yīng)的Action方法!
- 2)但是在路由表里,我們只寫(xiě)了Home,但是MVC框架約定,控制器都是以Controller結(jié)尾,并繼承了基類(lèi)Controller!
- 3)在這里Index方法返回值類(lèi)型是ActionResult,方法名和路由注冊(cè)的方法名一致,在Index方法內(nèi),調(diào)用了View方法并且返回,這是一個(gè)重載的方法,可以給個(gè)參數(shù),作為返回視圖的名稱(chēng),如果沒(méi)有參數(shù),默認(rèn)就是以當(dāng)前Action命名的視圖。
- 4)也就是Asp.netMVC架構(gòu),不像Java的MVC通過(guò)配置來(lái)建立關(guān)系,他是約定大于配置。
3、視圖
視圖里的代碼類(lèi)似于之前的ASPX里面的代碼,主要是HTML、JS和CSS等前端技術(shù)構(gòu)成,從MVC1.0到MVC5.0變化很大,Razor語(yǔ)法越來(lái)越完善,強(qiáng)大!
4、向視圖傳遞數(shù)據(jù)
1)傳統(tǒng)的WebForm方式,前置頁(yè)面類(lèi)和后置代碼類(lèi)是繼承的關(guān)系,可以直接進(jìn)行數(shù)據(jù)傳遞。
2)MVC模式下,視圖和控制器是完全分離的,通過(guò)專(zhuān)用渠道傳遞數(shù)據(jù),ViewData是在控制器和視圖之間傳遞數(shù)據(jù)的容器之一。
5、ASP.NET MVC執(zhí)行順序
六、Model和三層架構(gòu)
1、MVC與三層架構(gòu)之間有沒(méi)有區(qū)別?
- 1)MVC和三層架構(gòu)沒(méi)有必然的關(guān)系,架構(gòu)的思想是不一樣的。
- 2)三層架構(gòu)強(qiáng)調(diào)的是物理分離(多個(gè)項(xiàng)目構(gòu)成),MVC強(qiáng)調(diào)的是邏輯分離(一個(gè)項(xiàng)目構(gòu)成)。
- 3)MVC中也可以體現(xiàn)三層架構(gòu)。
- 4)有些MVC企業(yè)框架為了方便管理,會(huì)故意把Models做分層設(shè)計(jì)。
注意:在MVC中如果它不屬于View也不屬于Controller,那么就把它歸到Model中。
七、MVC和ASP.NET
1、ASP.NET MVC和ASP.NET
- (1)ASP.NET MVC是ASP.NET技術(shù)的子集。
- (2)ASP.NET MVC是在核心ASP.NET基礎(chǔ)之上構(gòu)建
- 1.依賴(lài)于HttpHandler,如請(qǐng)求是如何進(jìn)入控制器的
- 2.依賴(lài)于Session、Cookie、Cache、Applaction等狀態(tài)保持機(jī)制
- 3.使用HttpContext、Request、Response、Server等對(duì)象
- 4.在Controller使用智能感知很容易得到這些對(duì)象
- (3)ASP.NET MVC是.NET中編寫(xiě)WEB程序的一種可選方式
WebForms技術(shù)是另外一種可選方式
2、MVC和WebForms
(1)WebForms的特色
- 1)所見(jiàn)即所得,開(kāi)發(fā)傻瓜化
- 1.服務(wù)器端控件
- 2.事件模型
- 3.狀態(tài)管理
- 2)借鑒Winforms的成功特色
- 3)偏離了Web請(qǐng)求處理的原理
(2)Asp.net MVC的特色
- 1)關(guān)注分離
- 1.WebForm只是把一個(gè)頁(yè)面分成了前置頁(yè)面和后置代碼,不夠徹底
- 2.MVC可以把一個(gè)頁(yè)分成三塊,分得更徹底
- 2)可測(cè)試性
- 3)開(kāi)發(fā)更接近WEB的本質(zhì)
- 4)對(duì)開(kāi)發(fā)人員的技術(shù)水平要求更高
到此這篇關(guān)于ASP.NET MVC框架的文章就介紹到這了。希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
ASP.NET中HttpContext對(duì)象下的屬性介紹
這篇文章介紹了ASP.NET中HttpContext對(duì)象下的屬性,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05ASP.NET?MVC模式中應(yīng)用程序結(jié)構(gòu)詳解
本文詳細(xì)講解了ASP.NET?MVC模式中的應(yīng)用程序結(jié)構(gòu),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03連接ACCESS數(shù)據(jù)庫(kù)時(shí)發(fā)生錯(cuò)誤提示:找不到可安裝的 ISAM
連接ACCESS數(shù)據(jù)庫(kù)時(shí)發(fā)生錯(cuò)誤提示:找不到可安裝的 ISAM 檢查后發(fā)現(xiàn)原來(lái)是把Data Source寫(xiě)成 DataSource了2011-04-04.Net中的不可變集合(Immutable Collection)程序集簡(jiǎn)介
這篇文章介紹了.Net中的不可變集合(Immutable Collection)程序集,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06.Net創(chuàng)建型設(shè)計(jì)模式之建造者、生成器模式(Builder)
這篇文章介紹了.Net設(shè)計(jì)模式之建造者、生成器模式(Builder),文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05