日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

ASP.NET MVC 入门1、简介

發(fā)布時(shí)間:2023/12/10 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ASP.NET MVC 入门1、简介 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么是MVC模式

MVC(Model-View-Controller,模型—視圖—控制器模式)用于表示一種軟件架構(gòu)模式。它把軟件系統(tǒng)分為三個(gè)基本部分:模型(Model),視圖(View)和控制器(Controller)。

那么MVC模式和我們熟悉的WebForm模式有什么不同呢?他的各個(gè)部分又是怎樣分工的呢?

我們先來看一下普通的WebForm模式下,我們請(qǐng)求一個(gè)例如http://www.51mvc.com/blog/index.aspx的URL,那么我們的WebForm程序會(huì)到網(wǎng)站根目錄下去尋找blog目錄下的index.aspx文件,然后由index.aspx頁面的CodeBehind文件(.CS文件)進(jìn)行邏輯處理,其中或許也包括到數(shù)據(jù)庫去取出數(shù)據(jù)(其中的經(jīng)過怎樣的BLL到DAL這里就不談了),然后再由index.aspx頁面來呈現(xiàn)給用戶。簡單的示意圖如下所示:

也就是一個(gè)URL請(qǐng)求的是在服務(wù)器與該URL對(duì)應(yīng)路徑上的物理文件(ASPX文件或其他),然后由該文件來處理這個(gè)請(qǐng)求并返回結(jié)果給客戶端。

但是,對(duì)于MVC模式,這是怎樣的一個(gè)過程呢?

我們先來建一個(gè)ASP.NET MVC的項(xiàng)目吧。VS2008默認(rèn)是沒有ASP.NET MVC的項(xiàng)目模板的,首先我們需要到http://www.microsoft.com/downloads/details.aspx?FamilyId=A24D1E00-CD35-4F66-BAA0-2362BDDE0766&displaylang=en去下載最新的ASP.NET MVC的安裝程序,目前最新版本的Microsoft ASP.NET MVC Beta(10/15/2008)。下載安裝完后,我們可以在新建項(xiàng)目那里找到ASP.NET MVC的項(xiàng)目:

?
注:如果你的是中文版的VS,安裝完后可能會(huì)出現(xiàn)找不到這個(gè)模板的現(xiàn)象,你可以參考在中文版VS 08中安裝MVC這篇文章設(shè)置一下。

建立一個(gè)ASP.NET MVC項(xiàng)目后,默認(rèn)的項(xiàng)目大概如下圖:

我們可以看到項(xiàng)目中有幾個(gè)文件夾的命名和MVC(Model-View-Controller,模型—視圖—控制器模式)是對(duì)應(yīng)的。然后我們運(yùn)行一下項(xiàng)目看看:

我們注意到地址欄的URL是 Home/Index,如果按照我們前面說的WebForm的模式的話,我們應(yīng)該可以在我們的項(xiàng)目的根目錄下找到Home目錄,然后Home目錄下有個(gè)Index的文件,但是我們并不能在根目錄下找到Home這個(gè)目錄。不過還是讓我們?cè)赩iews目錄下找到了Views/Home/Index.aspx文件,我們輸入這個(gè)地址運(yùn)行看看:

Oh,No!路徑是對(duì)的,文件也存在,但為什么會(huì)是404,說找不到文件呢?如果不是直接訪問存在的物理文件,那么MVC又是怎樣工作的呢?

原來啊,MVC模式的工作過程是這樣的:

在MVC中,客戶端的所請(qǐng)求的URL是被映射到相應(yīng)的Controller去,然后由Controller來處理業(yè)務(wù)邏輯,或許要從Model中取數(shù)據(jù),然后再由Controller選擇合適的View返回給客戶端。再說回前面我們運(yùn)行的ASP.NET MVC程序訪問的http://localhost:2176/Home/Index這個(gè)URL,它訪問的其實(shí)是HomeController中的Index這個(gè)Action,見下圖:

其中public ActionResult Index()這個(gè)方法稱為Controller的Action,他返回的是ActionResult的類型。一個(gè)Controller可以有很多個(gè)Action。

那么一個(gè)URL是怎樣被定位到Controller中來的呢?我們先來看一下web.config文件,在web.config文件的httpModules配置節(jié)中,我們可以看到一個(gè)UrlRoutingModule:

<add?name="UrlRoutingModule"?type="System.Web.Routing.UrlRoutingModule,?System.Web.Routing,?Version=3.5.0.0,?Culture=neutral,?PublicKeyToken=31BF3856AD364E35"/>


就是這個(gè)UrlRoutingModule來把URL定位到Controller中去的。而對(duì)于URL會(huì)被路由到哪一個(gè)Controller中去,這些我們是完全可以自己定義的。我們到Global.asax文件去看一下:

?

我們可以看到這里定義了一個(gè)名為"Default"的Route,還定義了默認(rèn)的參數(shù)。默認(rèn)參數(shù)的意義在于,當(dāng)我們?cè)L問例如http://localhost:2176/的URL的時(shí)候,他會(huì)將不存在的參數(shù)用默認(rèn)的參數(shù)補(bǔ)上,也就是相當(dāng)于訪問http://localhost:2176/Home/Index一樣。

注意:我們知道在IIS中,我們?cè)L問網(wǎng)站的根目錄的時(shí)候,如果我們不指定要訪問的路徑,IIS會(huì)自己根據(jù)在IIS中設(shè)置的默認(rèn)文檔去訪問。例如我們?cè)L問http://localhost:2176/這個(gè)URL的時(shí)候,IIS會(huì)去尋找網(wǎng)站根目錄下的Default.aspx文件(假設(shè)我們?cè)O(shè)置了IIS的默認(rèn)文檔為Default.aspx)。而在ASP.NET MVC中對(duì)于類似http://localhost:2176/這樣的網(wǎng)站根目錄的路徑,并不會(huì)經(jīng)過Route的處理,所以我們看到我們建立的ASP.NET MVC程序的根目錄下有個(gè)Default.aspx文件,該文件就是用于處理前面的訪問根目錄的情況的。請(qǐng)不要?jiǎng)h除該文件。它會(huì)將http://localhost:2176/Default.aspx交由ASP.NET MVC來處理,具體請(qǐng)看Default.aspx.cs文件。

我們知道了一個(gè)URL是怎樣定位到相應(yīng)的Controller中去的了,那么View又是怎么被返回給客戶端的呢?我們從前面的截圖中看到,Controller中的Action方法中有個(gè)return View()的方法。默認(rèn)情況下它會(huì)返回與Action同名的view.在ASP.NET MVC默認(rèn)的視圖引擎(WebFormViewEngine)下,view是按如下路徑訪問的:

/Views/{Controller}/{Action}.aspx

也就是說對(duì)于http://localhost:2176/Home/Index這個(gè)路徑,在默認(rèn)情況下,在Index這個(gè)Action中用return View()來返回view的時(shí)候,會(huì)去尋找/Views/Home/Index.aspx文件,如果找不到這個(gè)文件,就會(huì)去Share目錄中尋找:/Views/Share/Index.aspx,如果都找不到,就會(huì)拋出找不到View的異常。return View("lulu.aspx")來指定要返回哪一個(gè)view:/Views/Home/lulu.aspx。

那么為什么前面我們直接訪問Views/Home/Index.aspx這里文件的時(shí)候會(huì)出現(xiàn)404錯(cuò)誤,說找不到文件呢?因?yàn)樵贛VC中,是不建議直接去訪問View的,所以我們建立的ASP.NET MVC程序在默認(rèn)情況下就在Views目錄下加了一個(gè)web.config文件,內(nèi)容如下:

也就是訪問Views目錄下的所有的文件都會(huì)由System.Web.HttpNotFoundHandler來處理,所以請(qǐng)不要將資源文件(CSS、JS、圖片等)放到Views目錄中。如果你確實(shí)要放到Views目錄下的話,請(qǐng)修改Views/web.config文件。

至此,大家應(yīng)該對(duì)MVC的工作原理有一個(gè)大概的了解了。我們就先說到這里吧。Enjoy!

總結(jié)

以上是生活随笔為你收集整理的ASP.NET MVC 入门1、简介的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。