.NET開発者のためのブログメディア

ASP.NET MVC Framework活用講座その1【ルーティング】
ASP.NET MVC Frameworkは、リクエスト内容であるURLに基づいて、実行されるプログラムが決定されるという仕組みとなっています。
この時、ルーティングという機能を使用することで、実行されるプログラムを切り替えることができますので方法を紹介します。
- SE
- 指定したURL以外のプログラムを実行するには、どうしたら良いでしょうか?
- PL
- そういう場合は、ルーティングという機能を使用します。内容を一緒に確認しましょう。
目次
指定したURL以外のプログラムを実行するルーティング機能
Webアプリケーションで画面を表示する際には、表示する画面のURLが指定されます。
下記のようなURLの形式です。
https://domain-name.com/Home/Index
MVC Frameworkでは、どのコントローラーのどのメソッドを実行するかは、指定されたURLを元に決定されます。
上記のURLでは、
- ・controller = Home
- ・action = Index
という指定になり、HomeControllerクラスのIndexメソッドが実行されます。
メソッドにパラメーターを付けることも可能です。
https://domain-name.com/Home/Index/3
上記のように、URLを指定すると、
1 |
HomeController.Index(3) |
このように、Indexメソッドにパラメーターを付けて実行することができます。
また、アクションは省略することが可能です。
https://domain-name.com/Home
上記のように、URLを指定するとHomeControllerクラスのIndexメソッドが実行されます。
上記のようにURLから、実行する処理を指定できる機能をルーティングと呼びます。
ルーティングでルートを設定する
Webアプリケーションではトップページにアクセスされた時、アプリケーションのルートにアクセスすることが多いため、ルートにアクセスされた時の設定方法を紹介します。
まずは、表示するページのコントローラーとビューを作成します。
コントローラーは以下のとおりです。
1 2 3 4 5 6 7 |
public class TopController : Controller { public ActionResult Index() { return View(); } } |
続いて、ビューは以下のとおりです。
1 2 3 |
<h2>Index</h2> TopControllerのIndexページ |
上記のページを表示する際のURLは以下のとおりとなります。
https://domain-name.com/Top/Index
この時、ルーティングでルートの設定を行い、
https://domain-name.com
とアクセスされた場合も、上記のページが表示されるようにします。
ルーティングの設定を行うには、RouteConfig.csを修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
public class RouteConfig { public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Top", action = "Index", id = UrlParameter.Optional } ); } } |
ルートのルーティングを設定しているのは、以下の部分です。
10 |
defaults: new { controller = "Top", action = "Index", id = UrlParameter.Optional } |
上記のように記述することで、ルートにアクセスされた際のコントローラーとアクションを指定することができます。
- SE
- ルーティングを設定することで、アクセス時の処理を指定できるんですね。
- PL
- そうですね。ルーティングは指定次第で様々な用途に使えるので、いろいろ試してみてください。
実行する処理を指定できるのがルーティング機能
ルーティングを使用することで、ルートアクセス時に実行するプログラムを指定することができました。
コントローラー、メソッドの指定だけでなく、パラメーターも指定でき、様々な用途に使用できます。様々な設定ができるので、ぜひ使ってみてください。