C#
 Computer >> コンピューター >  >> プログラミング >> C#

ASP.NET MVC(C#)のデフォルトルートを構成する3つのセグメントとは?

ASP.NET MVCのルーティングモジュールは、ブラウザから送られてくるリクエストを、特定のMVCコントローラーのアクションへマッピングする役割を担っています。アプリケーションの起動時には、フレームワークのルートテーブルに1つ以上のURLパターンが登録され、「このパターンに一致するリクエストはどう処理すべきか」をルーティングエンジンに伝えます。実行時にルーティングエンジンがリクエストを受け取ると、そのURLを登録済みのパターンと照合し、マッチした結果に基づいて適切なレスポンスを返します。

ルーティングの目的と仕組み

ASP.NETがルーティングを導入した最大の目的は、各URLを物理ファイルにマッピングする必要性を排除することでした。ルーティングを利用すれば、リクエストハンドラーに対応するURLパターンを自由に定義できます。

なお、System.Web.RoutingはMVCフレームワークだけでなく、ASP.NET Dynamic Dataでも利用されている汎用的な仕組みです。MVCフレームワークはこのルーティングを活用して、受信したリクエストを適切なコントローラーへ振り分けます。アプリケーションのルート定義は、Global.asaxファイル内で行うのが一般的です。

MVCアプリケーションのルート設定例

以下は、MVCアプリケーションにおける典型的なRouteConfigの記述例です。

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 }
        );
    }
}

ルートの構成要素

ルート名(Route Name)

ルートとは、ハンドラーにマッピングされたURLパターンのことです。MVCアプリケーションでは、このハンドラーがリクエストを処理するコントローラーに相当します。ルート名は、特定のルートを参照するための識別子として使用できます。

制約(Constraints)

URLパターンに対して一連の制約を適用することで、マッチ対象となるURLをより厳密に限定できます。たとえば「idは数値のみ許可する」といった条件を設けることが可能です。

URLパターン(URL Pattern)

URLパターンには、リテラル値変数プレースホルダーを含めることができます。これらは、スラッシュ(/)で区切られたURLの各セグメント内に配置されます。

リクエストが送信されると、URLはセグメントとプレースホルダーに解析され、変数の値がリクエストハンドラーへ渡されます。この仕組みは、クエリ文字列のデータが解析されてハンドラーに渡される流れとよく似ています。どちらの場合も変数情報はURLに含まれ、キーと値のペアとしてハンドラーに引き渡されます。ただし、クエリ文字列ではキーも値も両方URLに含まれるのに対し、ルーティングではキーはURLパターン上で定義されたプレースホルダー名であり、実際のURLに含まれるのは値だけという点が異なります。

デフォルト値(Defaults)と3つのセグメント

ルートを定義する際には、各パラメーターに既定値を割り当てることができます。defaultsは、既定のルート値を格納するオブジェクトです。そして、デフォルトルートを構成する3つのセグメントは次の通りです。

  • Controller(コントローラー)
  • Action(アクション)
  • Id(ID)

ASP.NET MVC(C#)のデフォルトルートを構成する3つのセグメントとは?

上記のようなURLが指定された場合、対応するコントローラーとアクションがマッチして実行されます。一方、URLにコントローラー名やアクションメソッドが明示されていない場合でも、デフォルトルートの設定に基づき、既定のコントローラーのアクションメソッド(例:HomeControllerのIndexアクション)が自動的に呼び出されます。

ASP.NET MVC(C#)のデフォルトルートを構成する3つのセグメントとは?

  1. C# ASP.NET Web APIのフィルターの種類と使い方を徹底解説

    ASP.NET Web APIフレームワークでは、リクエスト処理のさまざまな段階に追加のロジックを組み込むために「フィルター」が使用されます。フィルターは、ロギング、認可、キャッシュといった横断的関心事(クロスカッティングコンサーン)を実装するための仕組みであり、アクションメソッドやコントローラーに対して、宣言的またはプログラム的に適用できます。ここでは、C#のWeb APIで利用できる主なフィルターの種類について詳しく見ていきましょう。Web APIの主なフィルターの種類1. 認証フィルター(Authentication Filter)認証フィルターは、ユーザーの身元情報を検証するために使用

  2. C# ASP.NET Web APIにおけるコントローラーアクションの4つの戻り値の型とは?

    ASP.NET Web APIのアクションメソッドには、主に以下の4種類の戻り値の型を指定することができます。 void(戻り値なし) プリミティブ型/複合型 HttpResponseMessage IHttpActionResult 1. void(戻り値なし) すべてのアクションメソッドが必ずしも何かを返す必要はありません。戻り値の型としてvoidを指定することも可能です。 コード例 using DemoWebApplication.Models; using System.Web.Http; namespace DemoWebApplication.Controllers {