亚洲欧洲国产欧美一区精品,激情五月亚洲色五月,最新精品国偷自产在线婷婷,欧美婷婷丁香五月天社区

      考試首頁 | 考試用書 | 培訓(xùn)課程 | 模擬考場(chǎng) | 考試論壇  
        當(dāng)前位置:編程開發(fā) > DotNET > ASP.Net > 文章內(nèi)容
        

      ASP.NET教程:ASP.NET4.0URL路由改進(jìn)支持

       [ 2017年8月31日 ] 【

        從.NET框架3.5 SP1開始,微軟推出了ASP.NET路由支持,從而實(shí)現(xiàn)了特定資源的URL與其對(duì)應(yīng)的Web服務(wù)器上的物理文件之間的徹底解耦。借助于ASP.NET路由支持,開發(fā)人員可以定義一組路由規(guī)則,從而實(shí)現(xiàn)把路由模式映射到一個(gè)生成相應(yīng)內(nèi)容的類。例如,你可以把URL"Categories/CategoryName"映射到一個(gè)類,該類接收CategoryName而最終生成對(duì)應(yīng)于此種類的產(chǎn)品信息顯示于一個(gè)網(wǎng)格中的一組HTML標(biāo)記。

         在.NET 3.5 SP1中,ASP.NET路由主要是為ASP.NET MVC應(yīng)用而設(shè)計(jì)的,雖然在非ASP.NET MVC框架支持的Web窗體應(yīng)用程序中也有可能實(shí)現(xiàn)ASP.NET路由支持。然而,在Web窗體應(yīng)用程序中實(shí)現(xiàn)ASP.NET路由會(huì)涉及大量額外的工作。

        在Web窗體中,通常情況下,我們都要把路由模式映射到一個(gè)實(shí)際的ASP.NET頁面。為此,我們需要?jiǎng)?chuàng)建一個(gè)路由處理類以便在請(qǐng)求路由URL時(shí)調(diào)用之,并且在一定意義上實(shí)現(xiàn)了把請(qǐng)求調(diào)度到適當(dāng)?shù)腁SP.NET頁面。例如,為了把一個(gè)路由映射到一個(gè)物理文件,比如把Categories/CategoryName映射到ShowProductsByCategory.aspx,我們需要如下三個(gè)步驟:

        (1)在Global.asax文件中定義映射,用于把路由模式映射到一個(gè)路由處理類;

       。2)創(chuàng)建路由處理類,它負(fù)責(zé)解析網(wǎng)址,把所有路由參數(shù)存儲(chǔ)到一些目標(biāo)頁面可以訪問到的位置(如HttpContext.Items),并返回一個(gè)目標(biāo)頁面或處理請(qǐng)求路由的HTTP處理器的實(shí)例;

       。3)在目標(biāo)頁面中編寫代碼來獲取路由參數(shù),并使用他們生成頁面內(nèi)容。

        且不說花費(fèi)了多大的代價(jià)僅僅讀取前面的語句(更不用擔(dān)編寫之),你完全能夠想象到-在Web窗體應(yīng)用程序中執(zhí)行ASP.NET路由不一定是開發(fā)人員最直接的任務(wù)。

        值得慶幸的是,ASP.NET 4.0通過添加一組類和助理方法極大地簡(jiǎn)化了ASP.NET路由在Web窗體應(yīng)用程序中的使用。使用ASP.NET 4.0,你會(huì)更容易地定義路由規(guī)則,而不再需要?jiǎng)?chuàng)建一個(gè)自定義路由處理類。本文將詳細(xì)探討這方面的改進(jìn)支持。

        一、ASP.NET路由技術(shù)概述

        ASP.NET路由能夠干凈地實(shí)現(xiàn)URL與網(wǎng)頁文件名之間的解耦,從而可用于創(chuàng)建干凈、簡(jiǎn)潔且搜索引擎友好的網(wǎng)址。有關(guān)為什么應(yīng)該在Web應(yīng)用程序中使用ASP.NET路由的詳細(xì)討論,在此不作詳細(xì)討論,請(qǐng)參考其他有關(guān)文章。

        概括地說,ASP.NET路由允許開發(fā)人員定義路由規(guī)則,從而實(shí)現(xiàn)把一個(gè)路由模式(如Categories/CategoryName)映射到一個(gè)處理請(qǐng)求的類。這些路由規(guī)則在應(yīng)用程序啟動(dòng)時(shí)就已經(jīng)定義在文件Global.asax中的Application_Start事件處理程序中。

        在Web窗體應(yīng)用程序中,我們可能已經(jīng)擁有了產(chǎn)生我們感興趣內(nèi)容的ASP.NET網(wǎng)頁,我們只需要通過路由規(guī)則把路由模式映射到這些ASP.NET頁面-通過把任何路由參數(shù)(例如CategoryName)映射到該ASP.NET頁面來實(shí)現(xiàn)。當(dāng)在ASP.NET 3.5 SP1中使用ASP.NET路由時(shí),沒有方法直接把路由模式映射到ASP.NET頁。相反,我們必須創(chuàng)建一個(gè)路由處理類,它負(fù)責(zé)傳遞有關(guān)傳入請(qǐng)求的信息,并且必須返回一個(gè)HTTP處理程序來處理此請(qǐng)求。通常,在Web窗體應(yīng)用程序中一個(gè)路由處理類執(zhí)行以下步驟:

        (1)根據(jù)需要解析網(wǎng)址,或許研究某些路由參數(shù),并以這些值為基礎(chǔ)作出決定。

       。2)從需要被傳遞到ASP.NET頁面或HTTP處理程序(它們將處理這一請(qǐng)求)的URL加載任何路由參數(shù)?傊,我們要確保ASP.NET頁面會(huì)生成實(shí)際內(nèi)容,因?yàn)榇苏?qǐng)求知道所有路由參數(shù)(如CategoryName)的值。一個(gè)傳達(dá)這樣的信息的辦法是,把它們放在HttpContext.Items集合中-此集合擔(dān)當(dāng)存儲(chǔ)特定長(zhǎng)度的請(qǐng)求信息的數(shù)據(jù)存儲(chǔ)信息庫的作用。

       。3)返回執(zhí)行上述處理的ASP.NET頁面或HTTP處理程序的實(shí)例。

        通常,這些路由處理程序類具有差不多相似的特征。你把路由參數(shù)存儲(chǔ)到HttpContext.Items集合中,然后創(chuàng)建并返回一個(gè)負(fù)責(zé)生成該網(wǎng)址對(duì)應(yīng)內(nèi)容的ASP.NET頁面的實(shí)例。盡管路由處理類具有相似特征,但是編寫這些類是一項(xiàng)冗長(zhǎng)的任務(wù),因?yàn)槊總(gè)新路由都需要一個(gè)新的處理程序類,而此類需要實(shí)現(xiàn)幾乎與前一個(gè)類同樣的任務(wù)。

        在ASP.NET 3.5 SP1中使用ASP.NET路由的另一種挑戰(zhàn)主要與負(fù)責(zé)生成最終內(nèi)容的ASP.NET頁面相關(guān)。此頁面必須從HttpContext.Items集合((或其它其他存儲(chǔ)它們的路由處理程序類)中讀出路由參數(shù)。此外,為一個(gè)超鏈接或Response.Redirect調(diào)用生成路由友好的URL(如Categories/CategoryName)的語法也有點(diǎn)冗長(zhǎng)和混亂。

        在ASP.NET 4.0中,路由支持得到了增強(qiáng),包括一些新的路由相關(guān)的方法,從而使定義映射到實(shí)際ASP.NET頁面的路由規(guī)則更加簡(jiǎn)單。在ASP.NET 4.0中,你不再需要?jiǎng)?chuàng)建自定義路由處理程序類作為中介,而只需要從Global.asax文件中的路由規(guī)則中直接引用ASP.NET頁面即可。當(dāng)從路由規(guī)則中指定一個(gè)ASP.NET頁面時(shí),路由參數(shù)被自動(dòng)存儲(chǔ)在一個(gè)新的RouteData集合中,此集合可以從ASP.NET頁面中通過Page.RouteData結(jié)構(gòu)進(jìn)行訪問。更重要的是,在.NET框架4.0中包括一個(gè)自定義參數(shù)控件,這樣一來,你可以使用聲明的方式從ASP.NET的數(shù)據(jù)源控件(如SqlDataSource和LinqDataSource等)中使用RouteData中的值,而且也提供了一些方法來生成路由友好的URL,以及重定向到路由友好的網(wǎng)址。

      首頁 1 2 3 尾頁
      將考試網(wǎng)添加到收藏夾 | 每次上網(wǎng)自動(dòng)訪問考試網(wǎng) | 復(fù)制本頁地址,傳給QQ/MSN上的好友 | 申請(qǐng)鏈接 | 意見留言 TOP
      關(guān)于本站  網(wǎng)站聲明  廣告服務(wù)  聯(lián)系方式  站內(nèi)導(dǎo)航  考試論壇
      Copyright © 2007-2013 中華考試網(wǎng)(Examw.com) All Rights Reserved