您好,登錄后才能下訂單哦!
今天介紹 ASP.NET 4 的一項新的運行時特性——即基于 ASP.NET Web Forms 的 URL 路由能力。
什么是 URL 路由?
URL路由是在 ASP.NET 3.5 SP1 中首次引入的一種能力,它已經用于 ASP.NET MVC 應用程序內部來暴露一個干凈的、SEO友好的 "Web 2.0" URL。URL路由可以配置應用程序接受不映射到物理文件的請求URL。相反,可以使用路由定義對用戶有語義意義的URL,并能幫助搜索引擎優化(SEO)。
例如,一個顯示產品分類的傳統頁面的URL看起來可能像這樣:
http://www.mysite.com/products.aspx?category=software
使用 ASP.NET 4 中的URL路由引擎,可以配置應用程序接受下面的 URL 來表示相同的信息:
http://www.mysite.com/products/software
使用 ASP.NET 4,上面的URL既能夠映射到 ASP.NET MVC 控制器,同時也能夠映射到 ASP.NET Web Forms 頁面。
使用 ASP.NET MVC 映射 URL
ASP.NET 3.5 SP1 引入的 URL 路由提供了強大的方法來處理入站的 URL。通常,要編寫代碼讓應用程序在啟動時把指定的 URL 格式注冊/映射到匹配的代碼處理程序上。
下面就是這樣的一個例子,它使用 ASP.NET MVC 把 /product/software URL 映射到名為 "Products" 的控制器上,其中動作方法(action method)名為 "Browse":
MapRoute() 輔助方法的第一個參數 "product-browser" 是為路由提供一個友好的名稱。第二個參數 "products/{category}" 是匹配 /products/software URL的 URL過濾器,其中 URL 的第二段作為名為 "category" 的值。這個參數隨后將會被傳遞給 ProductsController 的 Browse() 動作方法進行處理。
使用 ASP.NET Web Forms 映射 URL
ASP.NET 4 現在允許使用 URL 路由引擎把 URL 映射到 ASP.NET Web Forms 頁面和 ASP.NET MVC 控制器。
下面是一個在 ASP.NET 4 中使用新的 MapPageRoute() 輔助方法把 /products/software URL 映射到 "Products.aspx" 頁面的例子,代碼位于應用程序的根目錄下:
MapPageRoute() 輔助方法的前兩個參數和 MapRoute() 相同。第一個參數為路由提供了一個友好的名稱,第二個參數指定了匹配的 URL 格式。第三個參數,則指向了 Products.aspx 頁面而不是控制器類來處理 URL。還能可選地指定額外的參數給 MapPageRoute(),從而充分利用像“路由限制”的特性并提供“默認的參數值”,就像在基于 ASP.NET MVC 的路由注冊中做的那樣。
接著在 Products.aspx 頁面內部,就可以編寫使用 ASP.NET 4 中新增的 Page.RouteData 屬性來獲取使用 /products/{category} URL過濾器映射的 "category" 參數的值,并將分類產品進行數據綁定以顯示它們:
除了編寫代碼訪問入站的路由參數,還可以利用新的聲明式的 <asp:routeparameter> 控件配合任何 DataSource 控件來聲明式地從路由綁定值。例如,下面使用了 <asp:routeparameter> 語句從 URL路由中的 /products/{category} 參數綁定了 select 語句的 @category 參數:
在 ASP.NET Web Forms 內部獲取 URL
ASP.NET 中的 URL 路由引擎既能夠用于把入站的 URL 映射到代碼處理程序,同時也能夠使用相同的映射注冊邏輯編程產生出站的 URL。
例如,上面我們給映射提供了一個“友好名稱”即 "products-name"。這就允許我們使用新的 Page.GetRouteUrl() 輔助方法在 URL 路由系統中查找路由,可選地指定參數給它,然后獲取它映射回來的真實 URL。例如,下面的代碼會獲取 "/products/software" 的 URL 值:
可以在代碼后置文件中或 .aspx 標記中訪問上述的輔助方法。
現在還有一個 Response.RedirectToRoute() 方法集,能夠用于把用戶重新定向對一個路由(不管是 MVC 還是 Web Forms 來處理)并可選地傳遞參數給它。
處理回送(PostBack)場景
使用 ASP.NET 4 的 URL 路由完全支持回送場景。<form runat="server"> 控件會自動地發出呈現頁面相同的 URL。例如,如果你使用 /produts/software URL 訪問頁面,那么頁面中的 <form runat="server"> 控件會呈現出 <form action="/products/software"> HTML 元素到客戶端,這意味著發生在頁面上的任何回送場景都將保留最初的 URL。
這樣就讓使用 Web Forms 和回送場景支持干凈、SEO 友好的 URL 變得容易了,并避免了當使用 URL 重寫模塊達到類似效果的人們還要去使用一些技巧。
總結
ASP.NET 4.0 同時讓使用 ASP.NET MVC 和 ASP.NET Web Forms 實現干凈的、SEO 友好的 URL 變得容易。
URL 路由引擎讓注冊任何類型的格式的URL 并將其映射到任何處理程序變得容易。因為URL 路由引擎可以同時用于映射入站URL和產生出站URL,所以可以在以后更改URL映射而不必修改任何頁面或控制器的特定代碼,這讓構建 SEO 優化的應用程序更加容易。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。