BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ASP.NET Web Forms 4.0での双方向ルーティングサポート

ASP.NET Web Forms 4.0での双方向ルーティングサポート

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を実現し、検索エンジンにこれらを発見させたり、使用させたりする。

 

原文はこちらです:http://www.infoq.com/news/2009/03/ASPNET40-Routing

この記事に星をつける

おすすめ度
スタイル

BT