.NET Framework 3.5 SP1已經包含了ASP.NET Routing引擎。現在微軟已經在ASP.NET WebForms 4.0中 增加了對Routing引擎更好的支持,它使用表達式構造器進行雙向Routing。
Channel 9剛發布了一個10-4的新視頻,展示如何在ASP.NET 4.0中使用這個新功能。
下面是視頻中展示的一段代碼。他們使用了一個經典示例,展示如何將Product.aspx? category=Jerseys映射至Product/Jerseys。在使用ASP.NET Routing引擎時,我們可以在 Application_Start中向RouteTable添加這樣的映射:
RouteTable.Routes.Add("Product",
new Route("Product/{name}",
new PageRouteHandler("~/Product.aspx")));
目前為了得到雙向的Routing支持,用戶必須對Query String進行URL重寫。不過,使用ASP.NET 4.0時 ,用戶可以注冊如下的表達式構造器(expression builder):
<system.web>
<compilation>
<expressionBuilders ...>
<add expressionPrefix="RouteUrl"
type="System.Web.Compilation.RouteUrlExpressionBuilder" />
<add expressionPrefix="RouteValue"
type="System.Web.Compilation.RouteValueExpressionBuilder" />
</expressionBuilders>
</compilation>
</system.web>
第一個表達式用於生成URL而第二個用於獲取Route值。在aspx頁面中可以使用$符號來訪問表達式:
<asp:HyperLink NavigationUrl="<%$ RouteUrl:RouteName=Product, name=Jerseys"
Text="Jerseys"
runat="server" />
如果要獲取name屬性中的值,用戶可以使用Route對象而不是Request對象:
RouteData.Values["name"];
或使用表達式構造器:
<%$ RouteValue:name %>
用戶可以利用ASP.NET Routing引擎和新的雙向支持將URL和物理上的Web Form解耦,以便支持對搜索 引擎更友好的URL。