0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

ASP.NET MVC5教學(xué)之如何創(chuàng)建MVC文件架構(gòu)

jf_78858299 ? 來(lái)源:python技術(shù)探秘 ? 作者:一品文學(xué)閣 ? 2023-03-29 11:15 ? 次閱讀

在講解關(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)大體如下:

  1. Views(視圖)

    存放與應(yīng)用程序有關(guān)的 HTML 文件。

  2. Controllers控制器

    存放負(fù)責(zé)處理用戶(hù)輸入及響應(yīng)的控制器類(lèi)。

  3. Models(模塊)

    存放用來(lái)顯示到HTML中的程序模型類(lèi)。

  4. App_Start(入口處理程序)

    包含應(yīng)用程序的配置邏輯文件。

  5. App_Data(應(yīng)用程序存儲(chǔ)文件)

    用來(lái)存儲(chǔ)應(yīng)用程序數(shù)據(jù)。通常以文件形式包含數(shù)據(jù)存儲(chǔ)。

  6. Content(存放靜態(tài)文件)

    頁(yè)面顯示用到的靜態(tài)文件,例如樣式表css文件,圖標(biāo),圖片等內(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的目錄結(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è)文件:

  1. BundleConfig(打包器)

    作用:將靜態(tài)文件(例如css,js文件)打包,便于調(diào)用。

  2. FilterConfig(過(guò)濾器)

    作用:可以判斷用戶(hù)登錄和權(quán)限,動(dòng)態(tài)Action管理,防篡改等。

  3. 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ī)則:

  1. Controller必須為公開(kāi)類(lèi);
  2. Controller名稱(chēng)必須以Controller結(jié)尾;
  3. 必須繼承自MVC內(nèi)建的Controller類(lèi);
  4. 所以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ù)文章。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制器
    +關(guān)注

    關(guān)注

    112

    文章

    15885

    瀏覽量

    175370
  • Asp.net
    +關(guān)注

    關(guān)注

    0

    文章

    36

    瀏覽量

    13822
  • MVC
    MVC
    +關(guān)注

    關(guān)注

    0

    文章

    73

    瀏覽量

    13823
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鼎普科技誠(chéng)聘.net開(kāi)發(fā)工程師

    asp.net mvc架構(gòu),能夠進(jìn)行mvc項(xiàng)目開(kāi)發(fā) 北京鼎普科技股份有限公司誠(chéng)聘:測(cè)試主管、windows內(nèi)核開(kāi)發(fā)工程師、C/C++中高級(jí)開(kāi)發(fā)人員、linux開(kāi)發(fā)工程師、嵌入式開(kāi)發(fā)工程
    發(fā)表于 02-18 11:38

    Net系列MVC的使用

    2018-04-08 開(kāi)胃學(xué)習(xí)Net 系列 - MVC作業(yè)
    發(fā)表于 03-27 15:35

    北大青鳥(niǎo)asp.net教程

    北大青鳥(niǎo)asp.net教程.ASP.NET 和 Web 窗體 理解Web窗體和在B/S結(jié)構(gòu)中IIS的工作原理在ASP.NET應(yīng)用程序中使用可視化組件和  ASP.NET內(nèi)部對(duì)
    發(fā)表于 07-15 16:21 ?0次下載

    Programming Microsoft ASP.NET

    Programming Microsoft ASP.NET 3.5 ASP.NET pages are dynamically compiled on demand when first
    發(fā)表于 10-21 09:23 ?59次下載
    Programming Microsoft <b class='flag-5'>ASP.NET</b>

    ASP.NET課程設(shè)計(jì)案例精編

    ASP.NET課程設(shè)計(jì)案例精編是一本全面講解ASP.NET編程方法和技巧的書(shū),從ASP.NET的基本知識(shí)點(diǎn)入手,以ASP.NET網(wǎng)絡(luò)應(yīng)用為主,詳細(xì)講述了大量的編程實(shí)例。這些實(shí)例基
    發(fā)表于 01-07 16:14 ?144次下載
    <b class='flag-5'>ASP.NET</b>課程設(shè)計(jì)案例精編

    Web Service和ASP.NET在GIS中的應(yīng)用探討

    介紹Web Service 和ASP.NET 的基本結(jié)構(gòu)和概念,針對(duì)傳統(tǒng)GIS 存在的數(shù)據(jù)共享困難,以及出于簡(jiǎn)化GIS 開(kāi)發(fā)過(guò)程的考慮,提出了基于Web Service 和ASP.NET 的GIS 架構(gòu),通過(guò)ADO.
    發(fā)表于 08-31 16:32 ?8次下載

    Asp.net MVC框架自定義視圖引擎的實(shí)現(xiàn)

    針對(duì)當(dāng)前Web 應(yīng)用系統(tǒng)層次不夠分明、結(jié)構(gòu)不夠清晰等不足,結(jié)合MVC 設(shè)計(jì)模式,實(shí)現(xiàn)了基于Asp.net MVC 框架的自定義視圖引擎,在顯示層將顯示邏輯與應(yīng)用邏輯相分離,將數(shù)據(jù)訪(fǎng)問(wèn)
    發(fā)表于 01-15 14:13 ?36次下載

    ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 ASP.NET 2.0核

    ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 ASP.NET 2.0核心對(duì)象
    發(fā)表于 02-07 15:05 ?0次下載

    ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 走進(jìn)ASP.NET 2.

    ASP.NET 2.0網(wǎng)絡(luò)開(kāi)發(fā)技術(shù)》 走進(jìn)ASP.NET 2.0
    發(fā)表于 02-07 15:11 ?0次下載

    ASP.net Ajax開(kāi)發(fā)》初識(shí)ASP.NET AJAX

    ASP.net Ajax開(kāi)發(fā)》初識(shí)ASP.NET AJAX
    發(fā)表于 02-07 15:11 ?0次下載

    如何使用MVC來(lái)開(kāi)發(fā)音樂(lè)商店網(wǎng)站?

    ASP.NET MVC框架是微軟推出的一種使用MVC進(jìn)行網(wǎng)站開(kāi)發(fā)的應(yīng)用,MVC的全稱(chēng)是模型一視圖一控制器,由3個(gè)分離的主要的組件組成,分別是:模型,視圖和控制器。
    發(fā)表于 08-28 08:00 ?6次下載
    如何使用<b class='flag-5'>MVC</b>來(lái)開(kāi)發(fā)音樂(lè)商店網(wǎng)站?

    常用HTML、CSS那你知道ASP.NET嗎?

    簡(jiǎn)單來(lái)說(shuō),ASP.NET 是一個(gè)使用 HTML、CSS、JavaScript 和服務(wù)器腳本創(chuàng)建網(wǎng)頁(yè)和網(wǎng)站的開(kāi)發(fā)框架。 眾所周知,目前PHP和ASP.NET是最主流的使用最多的Web網(wǎng)站開(kāi)發(fā)技術(shù)。兩者之間也是存在競(jìng)爭(zhēng)關(guān)系的,
    的頭像 發(fā)表于 03-29 11:12 ?890次閱讀

    ASP.NET MVC5教學(xué)Global.asax文件

    Global.asax是一個(gè)文本文件,它提供全局可用代碼。這些代碼包括應(yīng)用程序的事件處理程序以及會(huì)話(huà)事件、方法和靜態(tài)變量。有時(shí)該文件也被稱(chēng)為應(yīng)用程序文件。 Global.asax 文件
    的頭像 發(fā)表于 03-29 11:17 ?928次閱讀
    <b class='flag-5'>ASP.NET</b> <b class='flag-5'>MVC5</b><b class='flag-5'>教學(xué)</b><b class='flag-5'>之</b>Global.asax<b class='flag-5'>文件</b>

    ASP.NET MVC5教學(xué)之過(guò)濾器(上)

    MVC中的每一個(gè)請(qǐng)求,都會(huì)分配給相應(yīng)的控制器(Controller)和對(duì)應(yīng)的行為方法(Action)去處理,那么如果我們想要在Action處理的前后加上一些額外的處理邏輯怎么辦呢?這時(shí)候就用到了過(guò)濾器(Filters)。 在ASP.NET
    的頭像 發(fā)表于 03-29 11:20 ?796次閱讀
    <b class='flag-5'>ASP.NET</b> <b class='flag-5'>MVC5</b><b class='flag-5'>教學(xué)</b>之過(guò)濾器(上)

    ASP.NET MVC5教學(xué)之過(guò)濾器(下)

    MVC中的每一個(gè)請(qǐng)求,都會(huì)分配給相應(yīng)的控制器(Controller)和對(duì)應(yīng)的行為方法(Action)去處理,那么如果我們想要在Action處理的前后加上一些額外的處理邏輯怎么辦呢?這時(shí)候就用到了過(guò)濾器(Filters)。 在ASP.NET
    的頭像 發(fā)表于 03-29 11:20 ?739次閱讀
    <b class='flag-5'>ASP.NET</b> <b class='flag-5'>MVC5</b><b class='flag-5'>教學(xué)</b>之過(guò)濾器(下)