O ASP.NET Routing engine foi adicionado no .NET Framework 3.5 SP1. Agora a Microsoft adicionou o melhor suporte para o uso do engine no ASP.NET WebForms 4.0 usando expression builders permitindo o roteamento bi-direcional.
Channel9 apenas publicou um novo episódio 10-4 mostrando como usar esta nova funcionalidade no ASP.NET 4.0. No vídeo Jonathan Carter caminha através de um simples exemplo de como permitir isto em uma aplicação ASP.NET existente.
Abaixo está um resumo do código mostrado no vídeo. Eles usam o típico exemplo de como o Product.aspx?category=jerseys pode mapear o Product/Jerseys. Usando o ASP.NET Routing engine este mapeamento pode ser adicionado usando o RouteTable na Application_Start:
RouteTable.Routes.Add("Product",
new Route("Product/{name}",
new PageRouteHandler("~/Product.aspx")));
Para adicionar o suporte ao roteamento bi-direcional hoje, os usuários terão de usar URL rewriting na string de query. Entretanto, no ASP.NET 4.0 os usuários podem registrar o 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>
A primeira expression é para receber uma URL e a segunda e para receber um valor. O sinal $ é usado para acessar expressions de uma página aspx:
<asp:HyperLink NavigationUrl="<%$ RouteUrl:RouteName=Product, name=Jerseys" Text="Jerseys" runat="server" />
Para receber o valor do nome do atributo, os usuários usam o Route object em vez do Request object:
RouteData.Values["name"];
ou usam uma expression builder:
<%$ RouteValue:name %>
Ao usar o ASP.NET Routing e o novo suporte bi-direcional os usuários podem desassociar as URLs de um Web Form físico, permitindo URLs amigáveis e permitir que search engines possam identificá-las.