溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

發(fā)布時間:2020-06-11 01:23:42 來源:網(wǎng)絡 閱讀:259 作者:qczhang 欄目:編程語言

今天介紹 ASP.NET 4 的一項新的運行時特性——即基于 ASP.NET Web Forms 的 URL 路由能力。

什么是 URL 路由?

URL路由是在 ASP.NET 3.5 SP1 中首次引入的一種能力,它已經(jīng)用于 ASP.NET MVC 應用程序內(nèi)部來暴露一個干凈的、SEO友好的 "Web 2.0" URL。URL路由可以配置應用程序接受不映射到物理文件的請求URL。相反,可以使用路由定義對用戶有語義意義的URL,并能幫助搜索引擎優(yōu)化(SEO)。

例如,一個顯示產(chǎn)品分類的傳統(tǒng)頁面的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":

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

MapRoute() 輔助方法的第一個參數(shù) "product-browser" 是為路由提供一個友好的名稱。第二個參數(shù) "products/{category}" 是匹配 /products/software URL的 URL過濾器,其中 URL 的第二段作為名為 "category" 的值。這個參數(shù)隨后將會被傳遞給 ProductsController 的 Browse() 動作方法進行處理。

使用 ASP.NET Web Forms 映射 URL

ASP.NET 4 現(xiàn)在允許使用 URL 路由引擎把 URL 映射到 ASP.NET Web Forms 頁面和 ASP.NET MVC 控制器。

下面是一個在 ASP.NET 4 中使用新的 MapPageRoute() 輔助方法把 /products/software URL 映射到 "Products.aspx" 頁面的例子,代碼位于應用程序的根目錄下:

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

MapPageRoute() 輔助方法的前兩個參數(shù)和 MapRoute() 相同。第一個參數(shù)為路由提供了一個友好的名稱,第二個參數(shù)指定了匹配的 URL 格式。第三個參數(shù),則指向了 Products.aspx 頁面而不是控制器類來處理 URL。還能可選地指定額外的參數(shù)給 MapPageRoute(),從而充分利用像“路由限制”的特性并提供“默認的參數(shù)值”,就像在基于 ASP.NET MVC 的路由注冊中做的那樣。

接著在 Products.aspx 頁面內(nèi)部,就可以編寫使用 ASP.NET 4 中新增的 Page.RouteData 屬性來獲取使用 /products/{category} URL過濾器映射的 "category" 參數(shù)的值,并將分類產(chǎn)品進行數(shù)據(jù)綁定以顯示它們:

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

除了編寫代碼訪問入站的路由參數(shù),還可以利用新的聲明式的 <asp:routeparameter> 控件配合任何 DataSource 控件來聲明式地從路由綁定值。例如,下面使用了 <asp:routeparameter> 語句從 URL路由中的 /products/{category} 參數(shù)綁定了 select 語句的 @category 參數(shù):

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

在 ASP.NET Web Forms 內(nèi)部獲取 URL

ASP.NET 中的 URL 路由引擎既能夠用于把入站的 URL 映射到代碼處理程序,同時也能夠使用相同的映射注冊邏輯編程產(chǎn)生出站的 URL。

例如,上面我們給映射提供了一個“友好名稱”即 "products-name"。這就允許我們使用新的 Page.GetRouteUrl() 輔助方法在 URL 路由系統(tǒng)中查找路由,可選地指定參數(shù)給它,然后獲取它映射回來的真實 URL。例如,下面的代碼會獲取 "/products/software" 的 URL 值:

VS2010與.NET4系列 8. ASP.NET 4 Web Forms的URL路由

可以在代碼后置文件中或 .aspx 標記中訪問上述的輔助方法。

現(xiàn)在還有一個 Response.RedirectToRoute() 方法集,能夠用于把用戶重新定向?qū)σ粋€路由(不管是 MVC 還是 Web Forms 來處理)并可選地傳遞參數(shù)給它。

處理回送(PostBack)場景

使用 ASP.NET 4 的 URL 路由完全支持回送場景。<form runat="server"> 控件會自動地發(fā)出呈現(xiàn)頁面相同的 URL。例如,如果你使用 /produts/software URL 訪問頁面,那么頁面中的 <form runat="server"> 控件會呈現(xiàn)出 <form action="/products/software"> HTML 元素到客戶端,這意味著發(fā)生在頁面上的任何回送場景都將保留最初的 URL。

這樣就讓使用 Web Forms 和回送場景支持干凈、SEO 友好的 URL 變得容易了,并避免了當使用 URL 重寫模塊達到類似效果的人們還要去使用一些技巧。

總結

ASP.NET 4.0 同時讓使用 ASP.NET MVC 和 ASP.NET Web Forms 實現(xiàn)干凈的、SEO 友好的 URL 變得容易。

URL 路由引擎讓注冊任何類型的格式的URL 并將其映射到任何處理程序變得容易。因為URL 路由引擎可以同時用于映射入站URL和產(chǎn)生出站URL,所以可以在以后更改URL映射而不必修改任何頁面或控制器的特定代碼,這讓構建 SEO 優(yōu)化的應用程序更加容易。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI