ASP.NET 4 WebフォームでのURLルーティング

画像 URLルーティングとは何ですか?



ASP.NET 3.5 SP1で初めてURLルーティングを導入しました。これは、ASP.NET MVCアプリケーションで使用され、クリーンでSEOに優しい「Web 2.0」URLアドレスを提供します。 URLルーティングを使用すると、物理ファイルに対応しない要求されたアドレスを受信するようにアプリケーションを構成できます。 ルーティングを使用して、ユーザーにとって意味的に意味があり、検索エンジン最適化(SEO)に役立つURLをアドバタイズできます。



たとえば、製品カテゴリを表示する従来のページのURLアドレスは次のとおりです。

www.mysite.com/products.aspx?category=software


ASP.NET 4のURLルーティングを使用すると、同じ情報を表示するために次のURLを受け入れるようにアプリケーションを構成できます。

www.mysite.com/products/software


ASP.NET 4.0では、上記のURLをASP.NET MVCコントローラークラスと単純なASP.NET Webフォームページにバインドできます。



ASP.NET MVCを使用したURLバインディング



ASP.NET 3.5で導入されたルーティングURLエンジン。 SP1は、着信URLをインターセプトする強力な方法を提供します。 ハンドラーを記述するための特定の形式に一致するURLを登録/バインドするためのアプリケーションダウンロードの一部であるコードを記述します。



以下は、現在のASP.NET MVCを使用して、/製品/ソフトウェアURLを「参照」というメソッドを持つ「製品」コントローラークラスにバインドする方法の例です。



画像



ASP.NET Webフォームを使用したURLバインディング



ASP.NET 4.0では、ルーティングURLエンジンを使用して、URLアドレスをASP.NET Webフォームページにバインドすることもできます。



以下は、ASP.NET 4.0のMapPageRoute()ヘルパーメソッドを使用して、/ products / software URLをルートディレクトリに直接ある「Products.aspx」ページにマップする方法の例です。



画像



MapPageRoute()ヘルパーの最初の2つのパラメーターは、MapRoute()とまったく同じです。 最初のパラメーターはルートのフレンドリ名を指定し、2番目はURLアドレスの形式を定義します。 3番目のパラメーターは、コントローラクラスの代わりにURLを処理するようにProducts.aspxに指示します。 オプションで、MapPageRoute()の追加パラメーターを定義できます。これは、「ルート制限」として使用され、「パラメーターのデフォルト値」を提供します。これは、ASP.NET MVCでルートを登録するときに可能です。



Products.aspxページで、以下に示すように、新しいASP.NET 4.0プロパティPage.RouteDataを使用して、URLフィルター/ products / {category}を使用してバインドされた「category」パラメーターの値を取得するコードを記述できます。 :



画像



さらに、上記のコードを使用してルーターの着信パラメーターにプログラムでアクセスするために、ルート値を宣言的にリンクするために、ASP.NET DataSourceコントロールで新しい宣言型コントロール<asp:routeparameter>を使用できます。 たとえば、以下では、<asp:routeparameter>を使用して、リクエストの@category selectパラメーターをルーターURLの/ products / {category}パラメーターに関連付けます。



画像



ASP.NET WebフォームでのURLの取得



ASP.NETは、どちらの場合でもURLルーティングエンジンを使用できます。コード内のハンドラーに着信URLをリンクし、同じバインディング登録ロジックを使用して発信URLをプログラムで生成します。



たとえば、上記で/ product / {category} URLをリンクしたとき、「products-browse」というわかりやすい名前を付けました。 これにより、新しいヘルパーメソッドPage.GetRouteUrl()を使用して、URLアドレスのルーティングシステムでルートを検索し、オプションでそのパラメーターを決定してから、実際のURLを返すことができます。



たとえば、次のコードはURL値「/ products / software」を返します



画像



分離メソッドファイルまたは.aspxファイルで直接ヘルパーメソッドにアクセスできます。



また、Response.RedirectToRoute()メソッドのセットが登場しました。このメソッドを使用して、ルートに沿ってユーザーをリダイレクトし(MVCまたはWebフォームでどこで使用しても)、オプションでパラメーターを渡すことができます。



PostBackスクリプト処理



ASP.NET 4.0のURLルーティングは、ポストバックスクリプトを完全にサポートしています。 <form runat =” server”>コントロールは、ページが生成されたURLを自動的に置き換えます。 たとえば、アドレス/製品/ソフトウェアを含むページを開くと、サーバーコントロール<form runat =” server”>は<form action =” / products / software”>を生成します。これは、発生するポストバックスクリプトページでは、元のURLを保持します。



これにより、WebフォームおよびポストバックスクリプトでクリーンでSEOフレンドリーで読み取り可能なURLを維持でき、一部の機能を実現するためにURL書き換えモジュールで常に使用されている巧妙なトリックを回避できます。



All Articles