ASPNET程序設(shè)計(jì)教程第12章--ASPNET-MVC課件_第1頁(yè)
ASPNET程序設(shè)計(jì)教程第12章--ASPNET-MVC課件_第2頁(yè)
ASPNET程序設(shè)計(jì)教程第12章--ASPNET-MVC課件_第3頁(yè)
ASPNET程序設(shè)計(jì)教程第12章--ASPNET-MVC課件_第4頁(yè)
ASPNET程序設(shè)計(jì)教程第12章--ASPNET-MVC課件_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第12章 ASP.NET MVC本章講述的主要內(nèi)容12.1 ASP.NET MVC概述12.2 ASP.NET MVC路由12.3 ASP.NET MVC控制器12.4 ASP.NET MVC視圖和模型12.5 實(shí)訓(xùn) 設(shè)計(jì)一個(gè)用戶(hù)管理程序12.1 ASP.NET MVC概述 ASP.NET MVC是Microsoft推出的新型ASP.NET應(yīng)用程序開(kāi)發(fā)模式,MVC是模型(Model)、視圖(View)和控制器(Controller)3個(gè)單詞的縮寫(xiě),它意味著這種開(kāi)發(fā)模式將一個(gè)應(yīng)用程序分為模型、視圖和控制器3個(gè)組成部分。Visual Studio 2015中內(nèi)置的MVC版本為ASP.NET MVC

2、 5。12.1.1 MVC的構(gòu)成1. 模型(Model)2. 視圖(View)3. 控制器(Controller)12.1 ASP.NET MVC概述12.1.1 MVC的構(gòu)成4. MVC的工作原理12.1 ASP.NET MVC概述12.1.2 Razor語(yǔ)法 ASP.NET MVC 5默認(rèn)使用Razor語(yǔ)法來(lái)設(shè)計(jì)動(dòng)態(tài)網(wǎng)頁(yè)。由于Razor是通過(guò)System.Web.Mvc下的RazorViewEngine類(lèi)來(lái)實(shí)現(xiàn)的,所以也稱(chēng)為“Razor視圖引擎”。在ASP.NET MVC 5項(xiàng)目中使用的Razor視圖引擎為基于Razor語(yǔ)法的Web網(wǎng)頁(yè)第3版(也稱(chēng)為ASP.NET Web Pages 3)

3、。Razor的特點(diǎn) 利用Razor可以在視圖(.cshtml)文件中混合使用C#和HTML、JavaScript、jQuery等服務(wù)器端和客戶(hù)端語(yǔ)言。 Razor有非常簡(jiǎn)潔的語(yǔ)法格式。在視圖文件中只需要使用一個(gè)“”符號(hào)就可以表示C#語(yǔ)句塊或內(nèi)聯(lián)表達(dá)式。 Razor能自動(dòng)對(duì)網(wǎng)頁(yè)中輸入的字符串進(jìn)行HTML編碼,可以有效地防范客戶(hù)端腳本攻擊。12.1 ASP.NET MVC概述12.1.2 Razor語(yǔ)法2. 使用Razor (1) 使用標(biāo)記 標(biāo)記表示其后跟隨的是C#代碼的一個(gè)內(nèi)聯(lián)表達(dá)式、單行語(yǔ)句或一個(gè)語(yǔ)句塊。 (2) 使用Html.Raw()方法 對(duì)于HTML代碼中出現(xiàn)的符號(hào)本身或雙引號(hào)、單引號(hào)等

4、特殊符號(hào),可以通過(guò)Html.Raw()方法進(jìn)行轉(zhuǎn)義。12.1 ASP.NET MVC概述12.1.3 創(chuàng)建MVC應(yīng)用程序 參閱源代碼:ex12-112.1.4 ASP.NET MVC項(xiàng)目的組成 1. 應(yīng)用程序信息文件 Properties文件夾:項(xiàng)目屬性文件夾,其中包含有一個(gè)名為“AssemblyInfo.cs”,用于保存程序集信息(如,名稱(chēng)、版本、版權(quán)等)的文件。該文件由項(xiàng)目屬性窗口中各選項(xiàng)生成,一般不需要手工編輯。 引用文件夾(bin):用于存放系統(tǒng)運(yùn)行所必須的外部引用(各類(lèi).dll文件)。12.1 ASP.NET MVC概述12.1.4 ASP.NET MVC項(xiàng)目的組成2. 項(xiàng)目文件夾

5、App_Data文件夾:用于存放項(xiàng)目中使用的數(shù)據(jù)文件或數(shù)據(jù)庫(kù)文件,作用及功能與Web Forms項(xiàng)目中App_Data文件夾相同。 App_Start文件夾:用于存放配置類(lèi)的代碼文件,默認(rèn)包含有一個(gè)名為“RouteConfig.cs”的路由配置文件,也就是ASP.NET MVC項(xiàng)目的“路由表”。 Controllers文件夾:用于存放項(xiàng)目中所有控制器文件的文件夾。 Models文件夾:用于存放項(xiàng)目中所有模型文件的文件夾。 Views文件夾:用于存放項(xiàng)目中所有視圖的文件夾。每個(gè)視圖以對(duì)應(yīng)控制器名為子文件夾名,視圖文件的擴(kuò)展名為.cshtml。12.1 ASP.NET MVC概述12.1.4 AS

6、P.NET MVC項(xiàng)目的組成3. 配置文件 ApplicationInsights.config:監(jiān)視配置文件,用于設(shè)置如何監(jiān)視應(yīng)用程序的運(yùn)行情況。 Global.asax:全局配置文件,用于設(shè)置全局URL路由的默認(rèn)值,在應(yīng)用程序啟動(dòng)時(shí)可通過(guò)該文件執(zhí)行一些特殊操作。 packages.config:項(xiàng)目中附加的軟件包配置文件,由系統(tǒng)自動(dòng)生成和管理,一般不需要程序員編寫(xiě)和修改。 Web.config:XML格式的網(wǎng)站或文件夾的配置文件。其作用與Web Forms項(xiàng)目中的web.config文件相同。12.2 ASP.NET MVC路由 MVC路由是指用來(lái)將用戶(hù)請(qǐng)求與控制器對(duì)應(yīng)的處理方法進(jìn)行關(guān)聯(lián)的

7、設(shè)置,它也是除了模型、視圖和控制器外最為重要的一個(gè)概念,它分為入站和出站路由兩種類(lèi)型。在前面幾章介紹過(guò)的Web Forms開(kāi)發(fā)模式中所有的用戶(hù)請(qǐng)求都會(huì)指向一個(gè)物理存在的文件(如.aspx、html等),而在MVC中用戶(hù)請(qǐng)求則一律指向控制器中某個(gè)操作方法,并由該方法決定下一步的操作(打開(kāi)視圖、獲取數(shù)據(jù)等)。12.2.1 MVC路由1. 注冊(cè)路由 所謂“注冊(cè)路由”就是通過(guò)存放在App_Start文件夾下的RouteConfig.cs所表述的RouteConfig類(lèi)中定義的RegisterRoutes()方法,將URL、控制器及對(duì)應(yīng)的Action關(guān)聯(lián)起來(lái)12.2 ASP.NET MVC路由12.2.

8、1 MVC路由2. 從URL向控制器傳遞數(shù)據(jù) MVC程序中可以通過(guò)Controller類(lèi)的RouteData屬性或查詢(xún)字符串Request.QueryString進(jìn)行頁(yè)面間的數(shù)據(jù)傳遞。 參閱源代碼:ex12-212.2 ASP.NET MVC路由12.2.2 通過(guò)路由實(shí)現(xiàn)超鏈接和頁(yè)面跳轉(zhuǎn)1. 通過(guò)路由創(chuàng)建超鏈接 在ASP.NET MVC項(xiàng)目中如果希望請(qǐng)求一個(gè)特殊的路由,可以使用HtmlHelper類(lèi)中的RouteLink()方法,該方法用于動(dòng)態(tài)的在頁(yè)面中生成一個(gè)超鏈接。2. 通過(guò)路由實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn) 在ASP.NET MVC項(xiàng)目中仍然可以使用Response.Redirect()方法實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。

9、而更常用的方式是利用事先定義好的路由來(lái)實(shí)現(xiàn)頁(yè)面間的跳轉(zhuǎn)。12.3 ASP.NET MVC控制器 控制器繼承于Controller類(lèi),Controller又繼承于ControllerBase類(lèi)。但由于ControllerBase類(lèi)中包含的成員數(shù)量較少,而Controller卻包含有非常豐富的成員,所以Controller類(lèi)是控制器的默認(rèn)實(shí)現(xiàn),它負(fù)責(zé)以下幾個(gè)處理階段的工作: 查找要調(diào)用的Action方法,并驗(yàn)證該方法是否可以被調(diào)用。 獲取要執(zhí)行的Action方法的參數(shù)。 處理在執(zhí)行操作期間可能發(fā)生的錯(cuò)誤。 提供呈現(xiàn)視圖的默認(rèn)引擎。 在一個(gè)控制器中可以定義一個(gè)或多個(gè)Action方法,一個(gè)Action

10、方法可以也控制一個(gè)或多個(gè)視圖。12.3 ASP.NET MVC控制器12.3.1 控制器的常用屬性和方法1. ViewData和ViewBag屬性 ViewData屬性是一個(gè)ViewDataDictionary對(duì)象,是一個(gè)不區(qū)分大小寫(xiě)的由“鍵/值”(Key/Value)對(duì)組成的字典類(lèi)型集合,也就是說(shuō)ViewData中的每一個(gè)元素都由“鍵”和“值”一對(duì)數(shù)據(jù)組成。 ViewBag屬性時(shí)ViewData的另一種表示形式,也是一種由“鍵/值”(Key/Value)對(duì)組成的字典類(lèi)型集合。該屬性返回的是一種動(dòng)態(tài)數(shù)據(jù)類(lèi)型(Dynamic),這種數(shù)據(jù)類(lèi)型只有在進(jìn)行編譯時(shí)才會(huì)被系統(tǒng)處理。12.3 ASP.NET

11、 MVC控制器12.3.1 控制器的常用屬性和方法2. TempData屬性 TempData屬性的作用與ViewData和ViewBag相似,也用來(lái)向視圖傳遞數(shù)據(jù)。不同的是它可以實(shí)現(xiàn)在不同視圖間進(jìn)行數(shù)據(jù)傳遞。此外,TempData是一個(gè)臨時(shí)的鍵值對(duì)數(shù)據(jù)集合,只能在當(dāng)前請(qǐng)求時(shí)讀取該對(duì)象,再次請(qǐng)求時(shí)其中的所有數(shù)據(jù)都會(huì)自動(dòng)變成null。從MVC內(nèi)部的實(shí)現(xiàn)來(lái)看,TempData實(shí)際上是通過(guò)Session來(lái)實(shí)現(xiàn)的,這樣既可以區(qū)分不同的訪(fǎng)問(wèn)者,又能及時(shí)清除這些暫存的數(shù)據(jù)。 TempData的另一個(gè)典型用法是,在數(shù)據(jù)重定向到另一個(gè)Action方法之前先通過(guò)TempData存儲(chǔ)要傳遞的數(shù)據(jù),而后再?gòu)牧硪粋€(gè)A

12、ction中得到這些數(shù)據(jù)。12.3 ASP.NET MVC控制器12.3.1 控制器的常用屬性和方法3. Server屬性 控制器中,利用Controller類(lèi)公開(kāi)的Server屬性可以獲取ControllerBase類(lèi)中定義的HttpServerUtility對(duì)象,然后通過(guò)該對(duì)象在服務(wù)器上執(zhí)行一些特定的操作。 例如,對(duì)HTML字符串和URL字符串進(jìn)行編碼和解碼、將虛擬路徑轉(zhuǎn)換成物理路徑等。4. Request和Response屬性 在Action方法或視圖的C#代碼塊中,通過(guò)Request屬性可以獲取HttpRequestBase對(duì)象,從而進(jìn)一步調(diào)用該對(duì)象提供的一些屬性和方法。12.3 AS

13、P.NET MVC控制器12.3.2 控制器的Action方法1. Action方法參數(shù)的來(lái)源和映射 ASP.NET MVC框架可以將Action方法中的參數(shù)值自動(dòng)映射到Action方法。在默認(rèn)情況下,若Action方法帶有參數(shù),則ASP.NET MVC會(huì)檢查是否存在同名參數(shù),若有則自動(dòng)傳遞給Action方法,無(wú)需再編寫(xiě)從請(qǐng)求中獲取參數(shù)的代碼。2. ActionResult的返回值類(lèi)型 ActionResult類(lèi)使所有操作結(jié)果的基礎(chǔ),多數(shù)Action方法會(huì)返回從該類(lèi)派生的子類(lèi)實(shí)例。例如,常見(jiàn)的操作是調(diào)用View()方法返回一個(gè)從ActionResult類(lèi)派生的ViewResult類(lèi)的實(shí)例。當(dāng)然

14、也可以根據(jù)實(shí)際需要返回任意類(lèi)型(如,字符串、整數(shù)或布爾值等)的對(duì)象。不管返回值是何種類(lèi)型,它們?cè)诔尸F(xiàn)到響應(yīng)流之前,都會(huì)被封裝在ActionResult類(lèi)型的對(duì)象中。12.4 ASP.NET MVC視圖和模型12.4.1 布局頁(yè)的概念 布局頁(yè)也稱(chēng)為母版頁(yè),是指可以被其它頁(yè)面作為模板來(lái)引用的特殊網(wǎng)頁(yè),通常用來(lái)布局頁(yè)面中固定不變的部分,與ASP.NET Web Forms項(xiàng)目中母版頁(yè)(. master)的概念相似。布局頁(yè)通常被保存在網(wǎng)站文件夾下的Views/Shared子文件夾中,并且其文件名都以下劃線(xiàn)“_”開(kāi)頭(如,_Layout.cshtml等)。 布局頁(yè)中使用RenderBody()方法指定視

15、圖頁(yè)或視圖的顯示位置,使用RenderSection()方法顯示視圖中定義的“節(jié)”的內(nèi)容。12.4.2 使用布局頁(yè) 參閱源代碼:ex12-512.4 ASP.NET MVC視圖和模型12.4.3 通過(guò)模型向視圖傳遞數(shù)據(jù) 模型(Model)是ASP.NET MVC項(xiàng)目的數(shù)據(jù)接口。數(shù)據(jù)庫(kù)、XML文件、Web API及其它各種服務(wù)(Web Service)中的數(shù)據(jù)都可以通過(guò)模型傳遞給控制器。用戶(hù)提交的數(shù)據(jù)也可以通過(guò)模型傳遞給數(shù)據(jù)庫(kù)。 通過(guò)模型向視圖傳遞數(shù)據(jù)一般需要經(jīng)過(guò)以下3個(gè)步驟,在Models文件夾下創(chuàng)建模型類(lèi);在控制器中獲取模型數(shù)據(jù);最后在視圖中顯示模型數(shù)據(jù)。本節(jié)將通過(guò)一個(gè)簡(jiǎn)單的示例說(shuō)明通過(guò)模型向視圖傳遞數(shù)據(jù)的具體實(shí)現(xiàn)。 參閱源代碼:ex12-612.4 ASP.NET MVC視圖和模型12.4.4 使用ADO.NET實(shí)體數(shù)據(jù)模型 在ASP.NET MVC項(xiàng)目中可以使用ADO.NET實(shí)體數(shù)據(jù)模型,創(chuàng)建能對(duì)數(shù)據(jù)庫(kù)進(jìn)行常規(guī)操作的應(yīng)用程序。這種方式與在ASP.NET Web Forms項(xiàng)目中使用數(shù)據(jù)源控件類(lèi)似,幾乎不需要程序員編寫(xiě)任何代碼,在向?qū)У闹敢录纯墒址奖愕耐瓿沙绦蛟O(shè)計(jì)。 參閱源代碼:ex12-712.5 實(shí)訓(xùn) 設(shè)計(jì)一個(gè)用戶(hù)管理程序12.5.1 實(shí)訓(xùn)目的 通過(guò)本實(shí)訓(xùn)熟練掌握使用ADO.NET實(shí)體數(shù)據(jù)模型,創(chuàng)建用于管理SQL Server數(shù)據(jù)庫(kù)的MVC

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論