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

下載本文檔

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

文檔簡介

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 實訓(xùn) 設(shè)計一個用戶管理程序12.1 ASP.NET MVC概述 ASP.NET MVC是Microsoft推出的新型ASP.NET應(yīng)用程序開發(fā)模式,MVC是模型(Model)、視圖(View)和控制器(Controller)3個單詞的縮寫,它意味著這種開發(fā)模式將一個應(yīng)用程序分為模型、視圖和控制器3個組成部分。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默認使用Razor語法來設(shè)計動態(tài)網(wǎng)頁。由于Razor是通過System.Web.Mvc下的RazorViewEngine類來實現(xiàn)的,所以也稱為“Razor視圖引擎”。在ASP.NET MVC 5項目中使用的Razor視圖引擎為基于Razor語法的Web網(wǎng)頁第3版(也稱為ASP.NET Web Pages 3)

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

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

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

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

7、設(shè)置,它也是除了模型、視圖和控制器外最為重要的一個概念,它分為入站和出站路由兩種類型。在前面幾章介紹過的Web Forms開發(fā)模式中所有的用戶請求都會指向一個物理存在的文件(如.aspx、html等),而在MVC中用戶請求則一律指向控制器中某個操作方法,并由該方法決定下一步的操作(打開視圖、獲取數(shù)據(jù)等)。12.2.1 MVC路由1. 注冊路由 所謂“注冊路由”就是通過存放在App_Start文件夾下的RouteConfig.cs所表述的RouteConfig類中定義的RegisterRoutes()方法,將URL、控制器及對應(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進行頁面間的數(shù)據(jù)傳遞。 參閱源代碼:ex12-212.2 ASP.NET MVC路由12.2.2 通過路由實現(xiàn)超鏈接和頁面跳轉(zhuǎn)1. 通過路由創(chuàng)建超鏈接 在ASP.NET MVC項目中如果希望請求一個特殊的路由,可以使用HtmlHelper類中的RouteLink()方法,該方法用于動態(tài)的在頁面中生成一個超鏈接。2. 通過路由實現(xiàn)頁面跳轉(zhuǎn) 在ASP.NET MVC項目中仍然可以使用Response.Redirect()方法實現(xiàn)頁面跳轉(zhuǎn)。

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

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

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

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

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

14、也可以根據(jù)實際需要返回任意類型(如,字符串、整數(shù)或布爾值等)的對象。不管返回值是何種類型,它們在呈現(xiàn)到響應(yīng)流之前,都會被封裝在ActionResult類型的對象中。12.4 ASP.NET MVC視圖和模型12.4.1 布局頁的概念 布局頁也稱為母版頁,是指可以被其它頁面作為模板來引用的特殊網(wǎng)頁,通常用來布局頁面中固定不變的部分,與ASP.NET Web Forms項目中母版頁(. 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項目的數(shù)據(jù)接口。數(shù)據(jù)庫、XML文件、Web API及其它各種服務(wù)(Web Service)中的數(shù)據(jù)都可以通過模型傳遞給控制器。用戶提交的數(shù)據(jù)也可以通過模型傳遞給數(shù)據(jù)庫。 通過模型向視圖傳遞數(shù)據(jù)一般需要經(jīng)過以下3個步驟,在Models文件夾下創(chuàng)建模型類;在控制器中獲取模型數(shù)據(jù);最后在視圖中顯示模型數(shù)據(jù)。本節(jié)將通過一個簡單的示例說明通過模型向視圖傳遞數(shù)據(jù)的具體實現(xiàn)。 參閱源代碼:ex12-612.4 ASP.NET MVC視圖和模型12.4.4 使用ADO.NET實體數(shù)據(jù)模型 在ASP.NET MVC項目中可以使用ADO.NET實體數(shù)據(jù)模型,創(chuàng)建能對數(shù)據(jù)庫進行常規(guī)操作的應(yīng)用程序。這種方式與在ASP.NET Web Forms項目中使用數(shù)據(jù)源控件類似,幾乎不需要程序員編寫任何代碼,在向?qū)У闹敢录纯墒址奖愕耐瓿沙绦蛟O(shè)計。 參閱源代碼:ex12-712.5 實訓(xùn) 設(shè)計一個用戶管理程序12.5.1 實訓(xùn)目的 通過本實訓(xùn)熟練掌握使用ADO.NET實體數(shù)據(jù)模型,創(chuàng)建用于管理SQL Server數(shù)據(jù)庫的MVC

溫馨提示

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

最新文檔

評論

0/150

提交評論