Web FormにおけるURLルーティング
ASP.NET 3.5 SP1からURLルーティングという機能が導入されました。既存のASP.NETでは、フォルダ階層に沿ったURLしか表示できませんでしたが、URLルーティングを利用することで、仮想的にURLマッピングを行えるようになります。
ASP.NET MVCでは、このURLルーティングがキモの1つとして利用されていますが、ASP.NET 3.5 SP1の段階では、Web Formでの利用は手続きが煩雑で利用することが多くはありませんでした。しかし、ASP.NET 4からはWeb FormでもURLルーティングの利用のハードルがグッと下がりました(図5~6)。


最もシンプルなURLルーティング設定の流れを記載します。
- Global.asaxにルーティングルールを記載
- URLルーティング元のページと、先のページをそれぞれ用意
- HyperLinkコントロールなどを使用し、URLルーティングのアドレスを設定
以上です。原理はASP.NET MVCのURLルーティングと同じなので、ASP.NET MVCを触れたことがある方はイメージがしやすいかと思います。それでは順に解説します。
1.Global.asaxにルーティングルールを記載
Webアプリケーション起動時に一度だけ呼び出されるGlobal.asaxのApplication_Startメソッドから、RegisterRoutesメソッドを呼び出してルーティングルールをルートコレクションに追加します。
// Webアプリケーション起動時に一度だけ呼び出されるメソッド
void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
// ルーティングルールを記載するメソッド
void RegisterRoutes(RouteCollection routes)
{
routes.MapPageRoute("",
"Sample/{number}",
"~/URLRouting/Routing.aspx");
}
上記設定では、「Sample/{number}」というURLがリクエストされた時に、「~/URLRouting/Routing.aspx」ページにルーティングするという設定をしています。
2.URLルーティング元のページと、先のページをそれぞれ用意
基本ですが、URLルーティング元のページ(サンプルではURLRouting/URLRouting.aspx)と、URLルーティングでルーティングされるページ(サンプルではURLRouting/Routing.aspx)を用意します。
3.HyperLinkコントロールなどを使用し、URLルーティングのアドレスを設定
最後に、URLのリクエストを行うためのハイパーリンクコントロールを記述します。
<li>
<asp:HyperLink ID="hlRouting" runat="server"
NavigateUrl="~/Sample/20">
ルーティングサンプル。数値は20
</asp:HyperLink>
<中略>
</li>
上記サンプルでは、NavigateUrlプロパティにURLをハードコーディングしています。
以上の設定でURLルーティングの実装は完了です。実行結果は前述の図5~6の通りです。URLルーティングに関する詳しい解説は『ちょっと先取り Routing 4:その1 PageRouteHandler』(どっとねっとふぁんBlog)を参照ください。
