検証テスト

C# MVC

MVCルーティングでフォルダ階層を分けるときの方法

  1. エリアを定義する。

エリアを作成後、下記のようにnamespaceを追記

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 },
            namespaces: new[] {"{ソリューション名}.Controllers"}
        );
    }
}

※web.configがエリアごとに分かれる

  1. ルート情報を追加する。

Global.asax Application_Start()
自由に階層を作れるがファイル名を一意にする必要がある。

IList<String> locationFormats = new List<String>();
RazorViewEngine razorViewEngine = new RazorViewEngine();

//サンプル
locationFormats.Add("~/Views/Master/{0}.cshtml");
locationFormats.Add("~/Views/Master/{1}/{0}.cshtml");
locationFormats.Add("~/Views/Master/MasterEmployee/{0}.cshtml");
locationFormats.Add("~/Views/Master/MasterEmployee/{1}/{0}.cshtml");
locationFormats.Add("~/Views/Master/MasterSalary/{0}.cshtml");
locationFormats.Add("~/Views/Master/MasterSalary/{1}/{0}.cshtml");

// ビュー
razorViewEngine.ViewLocationFormats = razorViewEngine.ViewLocationFormats.Union(locationFormats).ToArray();
// 部分ビュー
razorViewEngine.PartialViewLocationFormats = razorViewEngine.PartialViewLocationFormats.Union(locationFormats).ToArray();

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(razorViewEngine);