takachaa / .net-Framework

0 stars 0 forks source link

【MVC】ルーティングの基本 #9

Open takachaa opened 7 years ago

takachaa commented 7 years ago

以下がデフォルトのルーティング設定 App_StartディレクトリのRouteConfig.csファイル

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace WebApplication1
{
    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 }
            );
        }
    }
}

※ちなみにApp_Startフォルダはアプリケーションが起動するタイミングで呼び出されるstaticメソッドを集めた、いわゆる初期化フォルダです。

※このクラスを呼び出しているのはGlobal.axaxのApplication_Startイベントハンドラーです。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace WebApplication1
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}
takachaa commented 7 years ago

補足) ちなみにデフォルトのApplication_Start()のイベントハンドラーは以下の手順で各初期化処理を呼び出している。

1.エリアに関する設定(※デフォルトではおそらく存在しない) AreaRegistration.RegisterAllAreas();

2.グローバルフィルターに関する設定 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); フィルター属性をアプリケーション全体に対して一括で適用することできます。

3.ルーティングに関する設定 RouteConfig.RegisterRoutes(RouteTable.Routes);

4.バンドルミニフィケーションに関する設定 BundleConfig.RegisterBundles(BundleTable.Bundles);