ASP.NET Routingエンジンが.NET Framework 3.5 SP1に追加された。双方向ルーティングを可能にするエクスプレッションビルダーを使用することで、ASP.NET WebForms 4.0でエンジンを使用するためのより良いサポートをMicrosoftは追加した。
Channel9は、ASP.NET 4.0でこの新たな機能の使用方法(リンク)を示した10-4のエピソードを公開した。そのビデオで、Jonathan Carter氏は既存のASP.NETアプリケーションでこれを有効にするための単純な例を挙げている。
以下は、ビデオで示されたコードの要約である。Product.aspx?category=jerseysがProduct/Jerseysにマップす る方法の典型的な例を使用する。ASP.NET Routingエンジンを使用し、このマッピングは Application_StartのRouteTableを使用することで追加される。
RouteTable.Routes.Add("Product",
new Route("Product/{name}",
new PageRouteHandler("~/Product.aspx")));
双方向ルーティングサポートを追加するために、ユーザはクエリストリングでURLリライト(リンク)を使用しなければならない場合がある。しかしながら、ASP.NET 4.0ではユーザはエクスプレッションビルダーを登録することができる。
<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の取得のためで、2つ目は、値の取得のエクスプレッションである。aspxページからエクスプレッションにアクセスするには、$記号が使用される。
<asp:HyperLink NavigationUrl="<%$ RouteUrl:RouteName=Product, name=Jerseys" Text="Jerseys" runat="server" />
名前の属性から値を取得するには、ユーザはRequestオブジェクトではなくRouteオブジェクトを使用する。
RouteData.Values["name"];
もしくは、エクスプレッションビルダーを使用する。
<%$ RouteValue:name %>
ASP.NET Routingおよび新たな双方向サポートを使用することで、ユーザは物理Web FormからURLを切り離すことができ、より分かりやすいURLを実現し、検索エンジンにこれらを発見させたり、使用させたりする。