<目次>
(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)
