検証テスト
MVCルーティングでフォルダ階層を分けるときの方法
- エリアを定義する。
エリアを作成後、下記のように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がエリアごとに分かれる
- ルート情報を追加する。
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);