<目次>
(1) ASP.NET MVCのルーティングの基本
(1-1) 構文
(1-2) サンプルプログラム
・RouteConfig.cs
・Controller
・View
(1-3) 補足:要求されたURLがパターンにマッチしない場合
(1) ASP.NET MVCのルーティングの基本
ルーティングというのはブラウザ(クライアント)から来るリクエストを、適切なMVCのControllerアクションに振り分け、レスポンスを返す役割を果たします。
ルーティングの設定は「/App_Start」配下の「RoutingConfig.cs」というC#のモジュールに設定されています。
(1-1) 構文
以下はデフォルトで用意されているルーティング用のメソッドです。
●構文(ルーティング全体)
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); }
●構文説明
Route MapRoute(string name, string url, Object defaults)
name | ルートを一意に識別するための名前です。デフォルトのルートは「Default」という名前になっています。 (例) name: “Default” |
url | リクエストURLとのマッチングを行うためのURLパターンを指定します。 (例) url: “{controller}/{action}/{id}” |
default | 上記の{controller}、{action}、{id}といったパラメータにデフォルト値を、匿名のプロパティを使ってセットします。 (例) defaults: new { controller = “Home”, action = “Index”, id = UrlParameter.Optional } |
プレースホルダ― | 紐づける値 | |
第1セグメント | {controller} | コントローラー名を割り当て(例:Home) |
第2セグメント | {action} | コントローラーのアクションに割り当て(例:Index) |
第3セグメント | {id} | 任意のユーザーパラメータを割り当て |
HomeController.Index(1)
(1-2) サンプルプログラム
簡単なASP.NET MVCのアプリケーションを例に使って、ルーティングのイメージを掴んでいけたらと思います。
App_Start |
∟RouteConfig.cs |
Controller |
∟HomeController.cs |
Views |
∟Home |
∟Index.cshtml |
Global.asax |
(図121)
・RouteConfig.cs
RouteConfig.csのサンプルです。先ほどご紹介した構文をベースにしています。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.Web.Routing; namespace MVCTest { 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 = "Home", action = "Index", id = UrlParameter.Optional } ); } } }
・Controller
Controllerのサンプルは以下になりますが、概要については別記事「ASP.NETのMVCとは?」にてご紹介しています。
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace MVCTest.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { return View(); } } }
・View
Viewについても、概要は別記事「ASP.NETのMVCとは?」にてご紹介しています。
@{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport" content="width=device-width" /> <title></title> </head> <body> <div> HelloWorld </div> </body> </html>
(図122)
(1-3) 補足:要求されたURLがパターンにマッチしない場合
要求URLが「url:」の{controller}、{action}、{id}のいずれも含まない場合は、defaultsのURLに送られます。
もしcontollerの指定のみなら、メソッドはdefaultのactionで指定したものが使用されます。
逆にactionの指定のみなら、Contollerはdefaultのcontrollerで指定したものが使用されます。
(図131)