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