熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET4實用方法Url Routing的使用

2013-11-13 10:36:38  來源: .NET編程 

  ASPNET 的Web Forms當中最令人激賞的則莫過於是URL Routing機制的全面支持過去在ASPNET  SP當中Web Forms或多或少就開始支持URL Routing機制它讓我們在網址的呈現以及使用上更加的有彈性  
    過去我們在ASPNET當中習慣於底下這樣的網址呈現方式
    但最近幾年REST風格的網站(或REST Web服務)興起你常常會看到網址的呈現方式變成http://myWebSite/Product/Edit/XBOX  
    上面這樣的網址有一些好處首先網址可以更明確的表達想要呈現的功能或是要後端應用程序進行的行為其次上面這樣的網址由於並非對應到後端某一個實體檔案(aspxcs)而是透過Routing機制來轉派因此相較過去的網址有著更高的安全性  
    也就是說在這樣的架構下ASPNET應用程序的網址再也不只是對應到實體檔案的路徑而是可用來表達要執行的功能至於實際執行時要處理的程序代碼或呈現結果的網頁也並非一定要是由網址所指向的實體頁面這也讓我們在開發應用程序時有更大的彈性例如一般的部落格網站網址可能是『http://blog/studyhost』由於blog網站多半都可以開放給多人申請理所當然的每一個用戶都有類似『http://blog/申請者ID』這樣的網址當然對應到ASPNET的後端應該都是同一套程序來處理在過去的ASPNET應用程序當中我們得要煞費一番工夫才能讓網站可以接受這樣的網址設計(把參數從QueryString轉變成REST風格)而現在透過URL Routing機制很快地就能輕松搞定  
    除此之外還有另一個顯而易見的好處采用REST風格的網址http://myWebSite/Product/Edit/XBOX vs 
    相較於傳統網址更容易被Google等搜索引擎查詢與檢索畢竟上圖網址中的XBOX比起產品Id=來得容易理解的多那我們要如何在ASPNET 當中使用這樣的機制呢您只需要透過新加入的Routes類別利用MapPageRoute方法即可輕易的完成URL路由的指定例如  
view plaincopy to clipboardprint? 
protected void Application_Start(object sender EventArgs e) {    
    RouteTableRoutesMapPageRoute(    
        "TestRoute" "Search/{ProductName}" "~/WebFormaspx");     
}   
protected void Application_Start(object sender EventArgs e) { 
    RouteTableRoutesMapPageRoute( 
        "TestRoute" "Search/{ProductName}" "~/WebFormaspx");  

    在Globalasax如此撰寫之後當使用者在網址列鍵入http://localhost:/Search/AK  
    網頁(應用程序主控權)將被導引到WebFormaspx頁面而在該頁面中則可以透過底下的方式來取得參數ProductName『AK  
   view plaincopy to clipboardprint? 
protected void Page_Load(object sender EventArgs e) {    
    ResponseWrite("Searching Product Name : " +     
                PageRouteDataValues["ProductName"]);    
}   
protected void Page_Load(object sender EventArgs e) { 
    ResponseWrite("Searching Product Name : " +  
                PageRouteDataValues["ProductName"]); 

    這樣的設計方式果然是方便容易許多別小看這樣的機制這讓我們開發大型的Web應用程序變為可能配合我們後面要介紹的ASPNET 當中的DynamicData技術我們得以輕易的開發出單一的一張aspx網頁(一支程序)即可維護後端Schema不同的各種數據表的不像過去ASPNET 時代若後端數據庫有許多數據表要處理我們幾乎得要為每一個數據表建立獨立的一張aspx維護頁面即便每一張aspx網頁上的行為與程序代碼邏輯幾乎完全一樣(CRUD) 
    更有趣的是配合URL Routing機制的普及化連過去我們熟悉的DataSource控件都增加了一個RouteParameter來共襄盛舉如今ASPNET  Web Forms可說是對URL Routing機制全面支持了 

view plaincopy to clipboardprint? 
<asp:LinqDataSource ID="LinqDataSource" runat="server"     
    ContextTypeName 
="UrlRoutingDataClassesDataContext" EntityTypeName 
=""  TableName="Customers" Where="CompanyName  
== @CompanyName">   
    <WhereParameters>   
     <asp:RouteParameter Name="CompanyName" RouteKey 
="CompanyName" Type="String" />   
    </WhereParameters>   
</asp:LinqDataSource>   
<asp:LinqDataSource ID="LinqDataSource" runat="server"  
    ContextTypeName= 
"UrlRoutingDataClassesDataContext" EntityTypeName 
="" TableName="Customers" Where="CompanyName 
 == @CompanyName"> 
    <WhereParameters> 
     <asp:RouteParameter Name="CompanyName" RouteKey 
="CompanyName" Type="String" /> 
    </WhereParameters> 
</asp:LinqDataSource>    
    您會發現透過上面這樣的語法我們可以讓LinqDataSource進行數據查詢時where條件所使用的參數直接引用URL Routing中的參數值類似過去的QueryStringParameter相當的方便好用


From:http://tw.wingwit.com/Article/program/net/201311/14114.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.