日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
詳解ASP.NET4中的URLRouting功能

本文將從URL Routing的概念開(kāi)始講起,同時(shí)介紹ASP.NET 4.0中關(guān)于URL Routing的功能問(wèn)題。希望本文能對(duì)大家有所幫助。

什么是URL Routing

首先,URL routing其實(shí)在ASP.NET 5 SP1中就被引入了,但是介于之前一直沒(méi)有用到,況且微軟的很多關(guān)于ASP.NET 4的介紹都把這作為一新的功能,因此就把題目取為這個(gè)吧。
之前,一個(gè)典型的ASP.NET的URL通常如下http://www.myexample.com/salesreport.aspx?year=2009

在這個(gè)URL中的salesreport.aspx代表的是一個(gè)真實(shí)存在的物理文件,后綴.aspx在url中的存在不僅完全沒(méi)有意義,而且使得這個(gè)url不是SEO-friendly的。而使用URL Routing之后,我們就可使用如下更簡(jiǎn)潔明了的地址來(lái)訪問(wèn)了,http://www.myexample.com/salesrepot/2009

使用Route Engine進(jìn)行URL Mapping

在asp.net mvc中,通過(guò)MapRoute將url映射到相應(yīng)的controller和action, 而在web form中,在Global.assx的Application_Start中,我們通過(guò)MapPageRoute來(lái)將url映射到一個(gè)頁(yè)面上

 
 
 
  1. void RegisterRoutes(RouteCollection routes)   
  2. {      
  3. routes.MapPageRoute("SalesRoute", "SalesReport/{year}", "~/sales.aspx");                                  

MapPageRoute這里使用了三個(gè)參數(shù),***個(gè)是給這個(gè)Route的命名,第二個(gè)是這個(gè)URL的映射Pattern, 而***一個(gè)就是對(duì)應(yīng)的ASPX頁(yè)面。除了這個(gè)最常用直接的方法之外,還可以使用其重載的其它方法,來(lái)個(gè)route設(shè)置default值,添加各種約束條件,如下面的這一個(gè)

 
 
 
  1. void RegisterRoutes(RouteCollection routes)   
  2. {   
  3.  routes.MapPageRoute("SalesRoute",   
  4.                         "SalesRoute/{year}",   
  5.                           
  6. "~/sales.aspx", true,   
  7.                        new RouteValueDictionary{   
  8.                             { "year", DateTime.Now.Year.ToString()}},                                            
  9.                         new RouteValueDictionary{   
  10.                            { "year", @"\d{4}" } });   

相比于***個(gè)route,這個(gè)多了三個(gè)參數(shù),***個(gè)為boolean值,后面兩個(gè)為RouteValueDictionary, 其中***個(gè)就指定了一個(gè)default值,而***一個(gè)就是一個(gè)約束,通過(guò)正則表達(dá)式約束了參數(shù)year必須是四位的數(shù)字。

在將SalesRoute/2009成功的映射到sales.aspx頁(yè)面之后,如何在sales的code中獲取這個(gè)“2009"值呢?通過(guò)Page類的RouteData來(lái)獲取

 
 
 
  1. protected void Page_Load(object sender, EventArgs e)   
  2. {       
  3. string year = RouteData.Values["year"] as string;                                                    

使用Routing Engine生成URL

除了解析URL之外,我們同時(shí)可以生成這些簡(jiǎn)潔明了的URL, 如下面的代碼

 
 
 
  1. RouteValueDictionary parameters = new RouteValueDictionary   
  2. {   
  3. { "year", "2008" },   
  4. { "category", "recreation" }  
  5. };    
  6. VirtualPathData vpd = RouteTable.Routes.GetVirtualPath(null, "SalesRoute", parameters);                      
  7. hyperLnk.NavigateUrl = vpd.VirtualPath; 

這里的SalesRoute就是我們?cè)贏pplication_Start中注冊(cè)過(guò)的那個(gè)Route。 值得注意的是,在SalesRoute的Pattern中,我們并沒(méi)有”{category}”,那么RouteEngine怎么處理這個(gè)值呢?這時(shí),category就為被作為一個(gè)querystring添加到url中,生成的URL將會(huì)是這樣的:http://www.myexample.com/salesreport/2009?category=recreation

此外,如果在這個(gè)sales頁(yè)面上加一個(gè)button,這個(gè)button對(duì)應(yīng)的url會(huì)不會(huì)也會(huì)如上面的url那樣簡(jiǎn)潔呢?答案是肯定的。但是是通過(guò)在Form標(biāo)簽中,指定Action來(lái)實(shí)現(xiàn)頁(yè)面的回發(fā)。

總結(jié)

雖然這個(gè)新生添加Route功能并不能使Asp.Net Web Form變得像Asp.Net MVC那樣讓人心動(dòng),不過(guò)這至少是一個(gè)不錯(cuò)的功能。


文章題目:詳解ASP.NET4中的URLRouting功能
瀏覽地址:http://m.5511xx.com/article/ccsepeo.html