創(chuàng)建MVC項目
首先踱讨,我們使用Visual Studio2019創(chuàng)建一個MVC架構(gòu)的應(yīng)用程序(Visual Studio2019下載蝗拿,可查看我的這篇文章:Visual Studio2019下載安裝教程)政恍。步驟如下:
首先打開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目錄結(jié)構(gòu)
下面我們介紹下MVC的目錄結(jié)構(gòu)汹胃。
- Views(視圖)
存放與應(yīng)用程序有關(guān)的 HTML 文件婶芭。 - Controllers(控制器)
存放負責(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包)
用于跟蹤管理已安裝的軟件包及其各自的版本。 - Web.config(網(wǎng)站配置)
存放一些應(yīng)用程序用到的配置信息。
MVC主要文件詳解
Global.asax
global.asax這個文件包含全局應(yīng)用程序事件的事件處理程序谎柄。
比如丁侄,我們可以在這個文件中添加一個當(dāng)應(yīng)用程序遇到未處理的異常時的代碼。那么當(dāng)應(yīng)用程序在運行過程中遇到了異常朝巫,則會調(diào)用這段代碼鸿摇。
再比如,我們可以添加一個當(dāng)應(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)容可查看我的ASP.NET MVC5基礎(chǔ) - Global.asax詳解這篇文章凰棉。
如圖所示损拢,Application_Start函數(shù)給所有應(yīng)用程序注冊了路由,篩選撒犀,打包器三個規(guī)則福压,但這三個規(guī)則沒有直接寫在函數(shù)中,而是使用了App_Start文件下的配置類來管理或舞。接下來我們就來看App_Start這個文件夾的作用荆姆。
App_Start文件夾
App_Start文件夾存放的是應(yīng)用程序啟動時全局配置的邏輯文件。
- BundleConfig(打包器)
作用:將靜態(tài)文件(例如css映凳,js文件)打包胆筒,便于調(diào)用。 - FilterConfig(過濾器)
作用:可以判斷用戶登錄和權(quán)限诈豌,動態(tài)Action管理仆救,防篡改等。 - 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下主要文件的作用弯菊。更多內(nèi)容可關(guān)注我后續(xù)文章纵势。