ASP.NET MVC5基礎(chǔ) - MVC文件架構(gòu)

創(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)用程序耀鸦。
image

填寫項目名稱,點擊創(chuàng)建顷扩。
image

選擇MVC,去掉高級選項中的【為HTTPS配置】慰毅,然后點擊創(chuàng)建隘截。
image

這時我們的MVC結(jié)構(gòu)的項目就創(chuàng)建完成了,目錄結(jié)構(gòu)如下:
image

MVC目錄結(jié)構(gòu)

下面我們介紹下MVC的目錄結(jié)構(gòu)汹胃。

  1. Views(視圖)
    存放與應(yīng)用程序有關(guān)的 HTML 文件婶芭。
  2. Controllers(控制器)
    存放負責(zé)處理用戶輸入及響應(yīng)的控制器類。
  3. Models(模塊)
    存放用來顯示到HTML中的程序模型類着饥。
  4. App_Start(入口處理程序)
    包含應(yīng)用程序的配置邏輯文件犀农。
  5. App_Data(應(yīng)用程序存儲文件)
    用來存儲應(yīng)用程序數(shù)據(jù)。通常以文件形式包含數(shù)據(jù)存儲宰掉。
  6. Content(存放靜態(tài)文件)
    頁面顯示用到的靜態(tài)文件呵哨,例如樣式表css文件,圖標轨奄,圖片等內(nèi)容孟害。
  7. Scripts(存放JavaScript文件)
    存放js文件。
  8. fonts(存放字體文件)
    存放字體文件挪拟。
  9. Global.asax(全局程序設(shè)置)
    主要是web應(yīng)用程序的全局設(shè)置文件挨务。
  10. packages.config(管理NuGet包)
    用于跟蹤管理已安裝的軟件包及其各自的版本。
  11. 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)用程序啟動時全局配置的邏輯文件。

  1. BundleConfig(打包器)
    作用:將靜態(tài)文件(例如css映凳,js文件)打包胆筒,便于調(diào)用。
  2. FilterConfig(過濾器)
    作用:可以判斷用戶登錄和權(quán)限诈豌,動態(tài)Action管理仆救,防篡改等。
  3. 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ī)則:

  1. Controller必須為公開類镇匀;
  2. Controller名稱必須以Controller結(jié)尾照藻;
  3. 必須繼承自MVC內(nèi)建的Controller類;
  4. 所以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ù)文章纵势。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子钦铁,更是在濱河造成了極大的恐慌软舌,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,376評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件牛曹,死亡現(xiàn)場離奇詭異佛点,居然都是意外死亡,警方通過查閱死者的電腦和手機黎比,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評論 2 385
  • 文/潘曉璐 我一進店門超营,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阅虫,你說我怎么就攤上這事演闭。” “怎么了书妻?”我有些...
    開封第一講書人閱讀 156,966評論 0 347
  • 文/不壞的土叔 我叫張陵船响,是天一觀的道長。 經(jīng)常有香客問我躲履,道長见间,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,432評論 1 283
  • 正文 為了忘掉前任工猜,我火速辦了婚禮米诉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘篷帅。我一直安慰自己史侣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 65,519評論 6 385
  • 文/花漫 我一把揭開白布魏身。 她就那樣靜靜地躺著惊橱,像睡著了一般。 火紅的嫁衣襯著肌膚如雪箭昵。 梳的紋絲不亂的頭發(fā)上税朴,一...
    開封第一講書人閱讀 49,792評論 1 290
  • 那天,我揣著相機與錄音家制,去河邊找鬼正林。 笑死,一個胖子當(dāng)著我的面吹牛颤殴,可吹牛的內(nèi)容都是我干的觅廓。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼涵但,長吁一口氣:“原來是場噩夢啊……” “哼杈绸!你這毒婦竟也來了帖蔓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,701評論 0 266
  • 序言:老撾萬榮一對情侶失蹤蝇棉,失蹤者是張志新(化名)和其女友劉穎讨阻,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體篡殷,經(jīng)...
    沈念sama閱讀 44,143評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡钝吮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,488評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了板辽。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奇瘦。...
    茶點故事閱讀 38,626評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖劲弦,靈堂內(nèi)的尸體忽然破棺而出耳标,到底是詐尸還是另有隱情,我是刑警寧澤邑跪,帶...
    沈念sama閱讀 34,292評論 4 329
  • 正文 年R本政府宣布次坡,位于F島的核電站,受9級特大地震影響画畅,放射性物質(zhì)發(fā)生泄漏砸琅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,896評論 3 313
  • 文/蒙蒙 一轴踱、第九天 我趴在偏房一處隱蔽的房頂上張望症脂。 院中可真熱鬧,春花似錦淫僻、人聲如沸诱篷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棕所。三九已至,卻和暖如春悯辙,著一層夾襖步出監(jiān)牢的瞬間琳省,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工笑撞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岛啸,地道東北人钓觉。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓茴肥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親荡灾。 傳聞我的和親對象是個殘疾皇子瓤狐,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,494評論 2 348

推薦閱讀更多精彩內(nèi)容