日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

ASP.NET MVC 開(kāi)篇

 昵稱(chēng)10504424 2014-09-25

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

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

一、WebForm請(qǐng)求方式


例如請(qǐng)求一個(gè)URL(http://www./Main/index.aspx),那么我們的WebForm程序會(huì)到網(wǎng)站根目錄下去尋找Main目錄下的index.aspx文件,然后由index.aspx頁(yè)面的CodeBehind文件(.CS文件)進(jìn)行邏輯處理,其中包括到數(shù)據(jù)庫(kù)去取出數(shù)據(jù)(其中的經(jīng)過(guò)怎樣的BLL到DAL這里就不談了),然后再由index.aspx頁(yè)面來(lái)呈現(xiàn)給用戶(hù)。

二、MVC請(qǐng)求方式


 

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

image

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

那么一個(gè)URL是怎樣被定位到Controller中來(lái)的呢?我們先來(lái)看一下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來(lái)把URL定位到Controller中去的。而對(duì)于URL會(huì)被路由到哪一個(gè)Controller中去,這些我們是完全可以自己定義的。我們到Global.asax文件去看一下:

image

我們可以看到這里定義了一個(gè)名為"Default"的Route,還定義了默認(rèn)的參數(shù)。

默認(rèn)參數(shù)的意義在于,當(dāng)我們?cè)L問(wèn)例如http://localhost:2176/的URL的時(shí)候,他會(huì)將不存在的參數(shù)用默認(rèn)的參數(shù)補(bǔ)上,也就是相當(dāng)于訪問(wèn)http://localhost:2176/Home/Index一樣。

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

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

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

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

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

image

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

此文章鏈接供大家參考:http://www.cnblogs.com/QLeelulu/archive/2008/09/30/1302462.html

作者:Raymond-Yang
出處:http://www.cnblogs.com/Raymond-YYC/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多