




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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è)用戶管理程序12.1 ASP.NET MVC概述 ASP.NET MVC是Microsoft推出的新型ASP.NET應(yīng)用程序開發(fā)模式,MVC是模型(Model)、視圖(View)和控制器(Controller)3個(gè)單詞的縮寫,它意味著這種開發(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語法 ASP.NET MVC 5默認(rèn)使用Razor語法來設(shè)計(jì)動(dòng)態(tài)網(wǎng)頁。由于Razor是通過System.Web.Mvc下的RazorViewEngine類來實(shí)現(xiàn)的,所以也稱為“Razor視圖引擎”。在ASP.NET MVC 5項(xiàng)目中使用的Razor視圖引擎為基于Razor語法的Web網(wǎng)頁第3版(也稱為ASP.NET Web Pages 3)
3、。Razor的特點(diǎn) 利用Razor可以在視圖(.cshtml)文件中混合使用C#和HTML、JavaScript、jQuery等服務(wù)器端和客戶端語言。 Razor有非常簡(jiǎn)潔的語法格式。在視圖文件中只需要使用一個(gè)“”符號(hào)就可以表示C#語句塊或內(nèi)聯(lián)表達(dá)式。 Razor能自動(dòng)對(duì)網(wǎng)頁中輸入的字符串進(jìn)行HTML編碼,可以有效地防范客戶端腳本攻擊。12.1 ASP.NET MVC概述12.1.2 Razor語法2. 使用Razor (1) 使用標(biāo)記 標(biāo)記表示其后跟隨的是C#代碼的一個(gè)內(nèi)聯(lián)表達(dá)式、單行語句或一個(gè)語句塊。 (2) 使用Html.Raw()方法 對(duì)于HTML代碼中出現(xiàn)的符號(hào)本身或雙引號(hào)、單引號(hào)等
4、特殊符號(hào),可以通過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”,用于保存程序集信息(如,名稱、版本、版權(quán)等)的文件。該文件由項(xiàng)目屬性窗口中各選項(xiàng)生成,一般不需要手工編輯。 引用文件夾(bin):用于存放系統(tǒng)運(yùn)行所必須的外部引用(各類.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ù)庫文件,作用及功能與Web Forms項(xiàng)目中App_Data文件夾相同。 App_Start文件夾:用于存放配置類的代碼文件,默認(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í)可通過該文件執(zhí)行一些特殊操作。 packages.config:項(xiàng)目中附加的軟件包配置文件,由系統(tǒng)自動(dòng)生成和管理,一般不需要程序員編寫和修改。 Web.config:XML格式的網(wǎng)站或文件夾的配置文件。其作用與Web Forms項(xiàng)目中的web.config文件相同。12.2 ASP.NET MVC路由 MVC路由是指用來將用戶請(qǐng)求與控制器對(duì)應(yīng)的處理方法進(jìn)行關(guān)聯(lián)的
7、設(shè)置,它也是除了模型、視圖和控制器外最為重要的一個(gè)概念,它分為入站和出站路由兩種類型。在前面幾章介紹過的Web Forms開發(fā)模式中所有的用戶請(qǐng)求都會(huì)指向一個(gè)物理存在的文件(如.aspx、html等),而在MVC中用戶請(qǐng)求則一律指向控制器中某個(gè)操作方法,并由該方法決定下一步的操作(打開視圖、獲取數(shù)據(jù)等)。12.2.1 MVC路由1. 注冊(cè)路由 所謂“注冊(cè)路由”就是通過存放在App_Start文件夾下的RouteConfig.cs所表述的RouteConfig類中定義的RegisterRoutes()方法,將URL、控制器及對(duì)應(yīng)的Action關(guān)聯(lián)起來12.2 ASP.NET MVC路由12.2.
8、1 MVC路由2. 從URL向控制器傳遞數(shù)據(jù) MVC程序中可以通過Controller類的RouteData屬性或查詢字符串Request.QueryString進(jìn)行頁面間的數(shù)據(jù)傳遞。 參閱源代碼:ex12-212.2 ASP.NET MVC路由12.2.2 通過路由實(shí)現(xiàn)超鏈接和頁面跳轉(zhuǎn)1. 通過路由創(chuàng)建超鏈接 在ASP.NET MVC項(xiàng)目中如果希望請(qǐng)求一個(gè)特殊的路由,可以使用HtmlHelper類中的RouteLink()方法,該方法用于動(dòng)態(tài)的在頁面中生成一個(gè)超鏈接。2. 通過路由實(shí)現(xiàn)頁面跳轉(zhuǎn) 在ASP.NET MVC項(xiàng)目中仍然可以使用Response.Redirect()方法實(shí)現(xiàn)頁面跳轉(zhuǎn)。
9、而更常用的方式是利用事先定義好的路由來實(shí)現(xiàn)頁面間的跳轉(zhuǎn)。12.3 ASP.NET MVC控制器 控制器繼承于Controller類,Controller又繼承于ControllerBase類。但由于ControllerBase類中包含的成員數(shù)量較少,而Controller卻包含有非常豐富的成員,所以Controller類是控制器的默認(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ū)分大小寫的由“鍵/值”(Key/Value)對(duì)組成的字典類型集合,也就是說ViewData中的每一個(gè)元素都由“鍵”和“值”一對(duì)數(shù)據(jù)組成。 ViewBag屬性時(shí)ViewData的另一種表示形式,也是一種由“鍵/值”(Key/Value)對(duì)組成的字典類型集合。該屬性返回的是一種動(dòng)態(tài)數(shù)據(jù)類型(Dynamic),這種數(shù)據(jù)類型只有在進(jìn)行編譯時(shí)才會(huì)被系統(tǒng)處理。12.3 ASP.NET
11、 MVC控制器12.3.1 控制器的常用屬性和方法2. TempData屬性 TempData屬性的作用與ViewData和ViewBag相似,也用來向視圖傳遞數(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)來看,TempData實(shí)際上是通過Session來實(shí)現(xiàn)的,這樣既可以區(qū)分不同的訪問者,又能及時(shí)清除這些暫存的數(shù)據(jù)。 TempData的另一個(gè)典型用法是,在數(shù)據(jù)重定向到另一個(gè)Action方法之前先通過TempData存儲(chǔ)要傳遞的數(shù)據(jù),而后再從另一個(gè)A
12、ction中得到這些數(shù)據(jù)。12.3 ASP.NET MVC控制器12.3.1 控制器的常用屬性和方法3. Server屬性 控制器中,利用Controller類公開的Server屬性可以獲取ControllerBase類中定義的HttpServerUtility對(duì)象,然后通過該對(duì)象在服務(wù)器上執(zhí)行一些特定的操作。 例如,對(duì)HTML字符串和URL字符串進(jìn)行編碼和解碼、將虛擬路徑轉(zhuǎn)換成物理路徑等。4. Request和Response屬性 在Action方法或視圖的C#代碼塊中,通過Request屬性可以獲取HttpRequestBase對(duì)象,從而進(jìn)一步調(diào)用該對(duì)象提供的一些屬性和方法。12.3 AS
13、P.NET MVC控制器12.3.2 控制器的Action方法1. Action方法參數(shù)的來源和映射 ASP.NET MVC框架可以將Action方法中的參數(shù)值自動(dòng)映射到Action方法。在默認(rèn)情況下,若Action方法帶有參數(shù),則ASP.NET MVC會(huì)檢查是否存在同名參數(shù),若有則自動(dòng)傳遞給Action方法,無需再編寫從請(qǐng)求中獲取參數(shù)的代碼。2. ActionResult的返回值類型 ActionResult類使所有操作結(jié)果的基礎(chǔ),多數(shù)Action方法會(huì)返回從該類派生的子類實(shí)例。例如,常見的操作是調(diào)用View()方法返回一個(gè)從ActionResult類派生的ViewResult類的實(shí)例。當(dāng)然
14、也可以根據(jù)實(shí)際需要返回任意類型(如,字符串、整數(shù)或布爾值等)的對(duì)象。不管返回值是何種類型,它們?cè)诔尸F(xiàn)到響應(yīng)流之前,都會(huì)被封裝在ActionResult類型的對(duì)象中。12.4 ASP.NET MVC視圖和模型12.4.1 布局頁的概念 布局頁也稱為母版頁,是指可以被其它頁面作為模板來引用的特殊網(wǎng)頁,通常用來布局頁面中固定不變的部分,與ASP.NET Web Forms項(xiàng)目中母版頁(. master)的概念相似。布局頁通常被保存在網(wǎng)站文件夾下的Views/Shared子文件夾中,并且其文件名都以下劃線“_”開頭(如,_Layout.cshtml等)。 布局頁中使用RenderBody()方法指定視
15、圖頁或視圖的顯示位置,使用RenderSection()方法顯示視圖中定義的“節(jié)”的內(nèi)容。12.4.2 使用布局頁 參閱源代碼:ex12-512.4 ASP.NET MVC視圖和模型12.4.3 通過模型向視圖傳遞數(shù)據(jù) 模型(Model)是ASP.NET MVC項(xiàng)目的數(shù)據(jù)接口。數(shù)據(jù)庫、XML文件、Web API及其它各種服務(wù)(Web Service)中的數(shù)據(jù)都可以通過模型傳遞給控制器。用戶提交的數(shù)據(jù)也可以通過模型傳遞給數(shù)據(jù)庫。 通過模型向視圖傳遞數(shù)據(jù)一般需要經(jīng)過以下3個(gè)步驟,在Models文件夾下創(chuàng)建模型類;在控制器中獲取模型數(shù)據(jù);最后在視圖中顯示模型數(shù)據(jù)。本節(jié)將通過一個(gè)簡(jiǎn)單的示例說明通過模型向視圖傳遞數(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ù)庫進(jìn)行常規(guī)操作的應(yīng)用程序。這種方式與在ASP.NET Web Forms項(xiàng)目中使用數(shù)據(jù)源控件類似,幾乎不需要程序員編寫任何代碼,在向?qū)У闹敢录纯墒址奖愕耐瓿沙绦蛟O(shè)計(jì)。 參閱源代碼:ex12-712.5 實(shí)訓(xùn) 設(shè)計(jì)一個(gè)用戶管理程序12.5.1 實(shí)訓(xùn)目的 通過本實(shí)訓(xùn)熟練掌握使用ADO.NET實(shí)體數(shù)據(jù)模型,創(chuàng)建用于管理SQL Server數(shù)據(jù)庫的MVC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生管理職業(yè)資格試題及答案
- 激光技術(shù)工程師考試的復(fù)習(xí)計(jì)劃試題及答案
- 行政崗面試試題及答案
- 西醫(yī)臨床研究性試題及答案解讀
- 2024學(xué)年六年級(jí)語文下冊(cè)第一單元5手指教案1含反思新人教版
- 2024年五年級(jí)語文下冊(cè)第五單元17愛如茉莉教案2蘇教版
- 探討光電工程師證書考試的學(xué)習(xí)習(xí)慣培養(yǎng)試題及答案
- 藥劑學(xué)中常見錯(cuò)誤及避免策略試題及答案
- 2024-2025學(xué)年二年級(jí)語文下冊(cè)第五單元課文412寓言二則作業(yè)設(shè)計(jì)新人教版
- 2024-2025學(xué)年九年級(jí)歷史與社會(huì)上冊(cè)第二單元開辟新的發(fā)展道路第二課民族民主運(yùn)動(dòng)的高漲教案人教版
- 養(yǎng)老院安全知識(shí)培訓(xùn)
- 煤炭行業(yè)的信息化與智能化轉(zhuǎn)型
- 抗生素合理應(yīng)用課件
- 2024年廣西廣投資本管理有限公司招聘筆試參考題庫含答案解析
- 酒店露營(yíng)基地項(xiàng)目計(jì)劃書
- 小學(xué)趣味科學(xué) 3D打印技術(shù) 課件
- 輕量化目標(biāo)檢測(cè)模型的研究
- 醫(yī)療器械人因工程與可用性測(cè)試總結(jié)
- 管道中的流量與壓強(qiáng)的關(guān)系及特殊情況分析
- 完整版工資條模板
- 藥品配送投標(biāo)方案(技術(shù)標(biāo))
評(píng)論
0/150
提交評(píng)論