差分
編集の要約なし
[[ASP.NET MVC]]のにおける'''ルーティング’’’とは、リクエストURIを、あらかじめ決められたルールに基づいていくつかのパラメータに分解し、その内容に従って適切なコントローラ・クラスを選択、実行すること言う。ルーティング'''とは、リクエストURI(俗にいうURL)を、予め決められたルールに基づいていくつかの文字列に分解し、その内容に従って適切な[[コントローラクラス]]を選択し、[[アクションメソッド]]を実行すること言う。
== ルーティング設定 ==
ルーティング設定についてはASP.NET MVCアプリが格納されているディレクトリの「Global.asax」に記載されている。
Global.asaxの主要部分(Visual Studio 2010で自動生成した場合のデフォルト設定)
<source lang="csharp">
routes.MapRoute(
// ルート名
"Default",
// パラメーター付きの URL
"{controller}/{action}/{id}",
// パラメーターの既定値
new {
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
</source>
第1引数は基本的に何でもよいそうだ。あとから誰がみても意味の伝わるわかりやすいルーティング名前を書いておく。
重要なのは第2引数。URLをスラッシュ区切りでコントローラー名、アクション名、パラメーターの3つに分解するように設定している。
第3引数はコントローラー名、アクション名、パラメーターのそれぞれが省略された場合に設定されるデフォルト値を設定している。
この例では省略しているが第4引数以降もある。
色々あるのでググれ。
=== URLから引数を取得する ===
ASP.NET MVCではルーティング定義に従い、URL文字列からアクションに渡す引数を自動抽出してくれる。
たとえば下記のルーティング定義では、「 http://localhost/watch/abc 」というURLにアクセスすると、VideoContorollerクラスのWatchメソッドが呼ばれ、videoName引数に「abc」という文字列が格納されている。
<source lang="csharp">
routes.MapRoute(
"DefaultVideo", // ルート名 "{controller}watch/{action}/{idvideoName}", // パラメーター付きの URL← これ超重要。 new { controller = "HomeVideo", action = "IndexWatch", id = UrlParameter.Optional } // パラメーターの既定値
);
</source>
== 関連項目 ==