これは、global.asax.cs
デフォルトでは、新しい MVC プロジェクトは、規則に従う標準の「キャッチオール」ルートを追加します。www.mysite.com/Controller/Action/ID
www.mysite.com/about HomeController.About() アクションへのルーティングの例など、別のものが必要な場合は、キャッチオールの前に次のルートを追加します。
routes.MapRoute(
"My About Route",
"About",
new { controller = "Home", action = "About" }
);
MVC キャッチオール規則に従わないカスタム ルートをいくつでも追加できます。必要に応じて、キャッチオール ルートを完全に置き換えることもできます。
編集:
以下のコメントに答えるために、考えられるすべてのアクションに対して必ずしもルートを追加する必要はありません。代わりに、キャッチオールが行っているように、URL のパターンに適合する単一のルートを作成できます。{controller}
と{action}
は特別なキーワードです。
例:
1.) プログラムには SetController がありますが、ユーザーはそれらをバッチと呼ぶことに慣れています。
routes.MapRoute(
"Batch",
"Batch/{action}/{id}",
new { controller = "Set", action = "Index", id = UrlParameter.Optional }
);
2.) コントローラーのオブジェクトのタイプでグループ化することを好みますが、URL は動詞/名詞の形式にします。
- フライトコントローラー
- ホテルコントローラー
- /find/flight /book/flight
- /検索/ホテル/予約/ホテル/ヒルトン
routes.MapRoute(
"NewCatchall",
"{action}/{controller}/{name}",
new { controller = "Home", action = "Index", name = UrlParameter.Optional }
);
2 番目の例では、デフォルト ルートを完全に置き換えることができ、可能なすべての URL がその形式に適合します。したがって、他のルートをチェックするために何も続行しません。ルートは順番にチェックされ、リクエストに一致する最初のパターンが使用され、残りは無視されることを知っておくことが重要です。
これらは、学習するときに役立ちました。