在講解關(guān)于MVC文件架構(gòu)之前,我們先來(lái)創(chuàng)建一個(gè)MVC的項(xiàng)目。
創(chuàng)建MVC項(xiàng)目
首先,我們使用Visual Studio2019創(chuàng)建一個(gè)MVC架構(gòu)的應(yīng)用程序(Visual Studio2019下載及安裝,可點(diǎn)擊下方 閱讀原文 到我的博客中查找相關(guān)文章)。步驟如下:
首先打開(kāi)VS2019,在啟動(dòng)頁(yè)選擇【創(chuàng)建新項(xiàng)目】。
然后選擇創(chuàng)建 ASP.NET Web 應(yīng)用程序。
填寫(xiě)項(xiàng)目名稱(chēng),點(diǎn)擊創(chuàng)建。
選擇MVC,去掉高級(jí)選項(xiàng)中的【為HTTPS配置】,然后點(diǎn)擊創(chuàng)建。
這時(shí)我們的MVC結(jié)構(gòu)的項(xiàng)目就創(chuàng)建完成了,目錄結(jié)構(gòu)如下:
至此,我們第一個(gè)MVC項(xiàng)目就創(chuàng)建完成了,后續(xù)的網(wǎng)站開(kāi)發(fā)都是基于這個(gè)架構(gòu)完成的。下面我講下關(guān)于MVC的目錄結(jié)構(gòu)。
MVC目錄結(jié)構(gòu)
MVC的目錄結(jié)構(gòu)大體如下:
-
Views(視圖)
存放與應(yīng)用程序有關(guān)的 HTML 文件。
-
存放負(fù)責(zé)處理用戶(hù)輸入及響應(yīng)的控制器類(lèi)。
-
Models(模塊)
存放用來(lái)顯示到HTML中的程序模型類(lèi)。
-
App_Start(入口處理程序)
包含應(yīng)用程序的配置邏輯文件。
-
App_Data(應(yīng)用程序存儲(chǔ)文件)
用來(lái)存儲(chǔ)應(yīng)用程序數(shù)據(jù)。通常以文件形式包含數(shù)據(jù)存儲(chǔ)。
-
Content(存放靜態(tài)文件)
頁(yè)面顯示用到的靜態(tài)文件,例如樣式表css文件,圖標(biāo),圖片等內(nèi)容。
-
Scripts(存放JavaScript文件)
存放js文件。
-
fonts(存放字體文件)
存放字體文件。
-
Global.asax(全局程序設(shè)置)
主要是web應(yīng)用程序的全局設(shè)置文件。
-
packages.config(管理NuGet包)
用于跟蹤管理已安裝的軟件包及其各自的版本。
11. Web.config(網(wǎng)站配置)
存放一些應(yīng)用程序用到的配置信息。
MVC的目錄結(jié)構(gòu)基本上就是這些了。這里每個(gè)文件在應(yīng)用程序中都有其作用,下面我講下每個(gè)文件的用處是什么。
MVC架構(gòu)下的文件都有哪些作用?
Global.asax(全局配置文件)
global.asax這個(gè)文件包含的是全局應(yīng)用程序事件的事件處理程序。
簡(jiǎn)單來(lái)說(shuō),我們可以在這個(gè)文件中添加一些整個(gè)應(yīng)用程序運(yùn)行過(guò)程中都可調(diào)用的代碼。比如,我們添加一個(gè)當(dāng)應(yīng)用程序遇到異常時(shí)就進(jìn)入到此文件來(lái)處理的代碼,那么當(dāng)應(yīng)用程序在運(yùn)行過(guò)程中遇到了異常,則會(huì)調(diào)用這段代碼,那么我們就可以控制當(dāng)程序報(bào)錯(cuò)了,給用戶(hù)一個(gè)反饋界面,讓用戶(hù)體驗(yàn)更好一些。
再比如,我們可以添加一個(gè)當(dāng)應(yīng)用程序啟動(dòng)時(shí),適用于全局范圍的初始化代碼,例如路由規(guī)則,篩選規(guī)則,文件捆綁規(guī)則等,那么這些規(guī)則在接下來(lái)所有的應(yīng)用程序中都適用。我們創(chuàng)建的MVC項(xiàng)目默認(rèn)給我們添加了這三個(gè)規(guī)則。如圖:
可以看到,MvcApplication類(lèi)繼承自HttpApplication,HttpApplication是定義對(duì) ASP.NET 應(yīng)用程序內(nèi)所有應(yīng)用程序?qū)ο蠊玫姆椒?、屬性和事件。所以global中能處理的事件不止我剛才提到的兩種,更多詳細(xì)內(nèi)容可點(diǎn)擊 閱讀原文 到我的博客中查找相關(guān)的文章。
如圖所示,Application_Start函數(shù)是應(yīng)用程序入口,也就是說(shuō),當(dāng)應(yīng)用程序啟動(dòng)時(shí),會(huì)先調(diào)用這個(gè)方法。
再看方法內(nèi)部,它給所有后續(xù)的程序注冊(cè)了路由,篩選,打包器三個(gè)規(guī)則,但這三個(gè)規(guī)則沒(méi)有直接寫(xiě)在函數(shù)中,而是調(diào)用了App_Start文件下的配置類(lèi)來(lái)管理。接下來(lái)我們就來(lái)看App_Start這個(gè)文件夾的作用。
App_Start文件夾
App_Start文件夾在MVC架構(gòu)中是存放應(yīng)用程序啟動(dòng)時(shí)全局配置的邏輯文件。當(dāng)我們創(chuàng)建MVC項(xiàng)目后,會(huì)自動(dòng)生成以下三個(gè)文件:
-
BundleConfig(打包器)
作用:將靜態(tài)文件(例如css,js文件)打包,便于調(diào)用。
-
FilterConfig(過(guò)濾器)
-
RouteConfig(路由器)
作用:將瀏覽器的URL請(qǐng)求映射到特定的MVC控制器動(dòng)作。也就是將網(wǎng)站的URL不再以.html或.aspx結(jié)尾,而是設(shè)定為統(tǒng)一的模式來(lái)顯示。
Controller
MVC的核心就是Controller(控制器),它負(fù)責(zé)處理瀏覽器傳送過(guò)來(lái)的所有請(qǐng)求,并決定要將什么內(nèi)容響應(yīng)給瀏覽器。Controller文件夾下儲(chǔ)存的就是各種控制器文件。
控制器本身只是一個(gè)類(lèi),該類(lèi)有許多方法。在這些方法中,只要是公開(kāi)方法,該方法就會(huì)被視為是一種動(dòng)作(Action)。只要有動(dòng)作存在,就可以通過(guò)該動(dòng)作方法接收網(wǎng)頁(yè)請(qǐng)求并決定響應(yīng)視圖。
同時(shí),按照MVC的約定,控制器文件需符合以下規(guī)則:
- Controller必須為公開(kāi)類(lèi);
- Controller名稱(chēng)必須以Controller結(jié)尾;
- 必須繼承自MVC內(nèi)建的Controller類(lèi);
- 所以Action動(dòng)作方法必須為公開(kāi)方法。
關(guān)于Controller的使用方法我會(huì)在后續(xù)文章中詳細(xì)說(shuō)明。
Models
Models文件夾下,儲(chǔ)存的是最終顯示到View頁(yè)面中的視圖模型。Model主要負(fù)責(zé)維持?jǐn)?shù)據(jù)狀態(tài),通過(guò)它將數(shù)據(jù)從數(shù)據(jù)庫(kù)中檢索出來(lái)傳遞給Controller處理,客戶(hù)端傳過(guò)來(lái)的數(shù)據(jù)也是通過(guò)Model傳回?cái)?shù)據(jù)存儲(chǔ)系統(tǒng)中。
可以說(shuō),Model(視圖模型)是View(視圖)連接數(shù)據(jù)庫(kù)的一個(gè)橋梁,它將呈現(xiàn)在用戶(hù)面前的內(nèi)容轉(zhuǎn)換為可存儲(chǔ)在數(shù)據(jù)庫(kù)中的內(nèi)容,也是非常重要的。
Views
View主要用于呈現(xiàn)數(shù)據(jù)。由于Controller和相關(guān)的Service處理完業(yè)務(wù)邏輯并將結(jié)果打包成了Model實(shí)體,所以View只需要負(fù)責(zé)將Model實(shí)體轉(zhuǎn)換為視圖呈現(xiàn)出來(lái)。更詳細(xì)的內(nèi)容我會(huì)在后續(xù)文章中加以說(shuō)明。
Web.config
Web.config是一個(gè)配置文件,是基于XML的文本文件。
在發(fā)布Web應(yīng)用程序時(shí),Web.config文件并不編譯進(jìn)dll文件中,它主要存儲(chǔ)一些ASP.NET應(yīng)用程序的配置信息,比如上傳文件的保存路徑可配置在appSettings節(jié)點(diǎn);數(shù)據(jù)庫(kù)連接字符可保存在connectionStrings節(jié)點(diǎn);用于定義自定義錯(cuò)誤信息的customErrors節(jié)點(diǎn)等等…
總結(jié)
通過(guò)本文可以了解到,如何創(chuàng)建第一個(gè)MVC項(xiàng)目、MVC框架的目錄結(jié)構(gòu)以及MVC下主要文件的作用。更多MVC5框架內(nèi)容可關(guān)注我后續(xù)文章。
-
控制器
+關(guān)注
關(guān)注
112文章
15885瀏覽量
175370 -
Asp.net
+關(guān)注
關(guān)注
0文章
36瀏覽量
13822 -
MVC
+關(guān)注
關(guān)注
0文章
73瀏覽量
13823
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論