Asp.net mvc 4 子文件夹中的控制器和视图

Asp.net mvc 4 子文件夹中的控制器和视图,asp.net-mvc-4,directory-structure,Asp.net Mvc 4,Directory Structure,我正在使用ASP.NET MVC 4开发一个web应用程序,我想用以下方式组织我的控制器和视图: /Controller /Admin /LessonController.cs /ExerciseController.cs HomeController.cs /Views /Admin /Lesson /Index.cshtml /H

我正在使用ASP.NET MVC 4开发一个web应用程序,我想用以下方式组织我的控制器和视图:

/Controller    
    /Admin
        /LessonController.cs
        /ExerciseController.cs    
    HomeController.cs

/Views
        /Admin
              /Lesson
                   /Index.cshtml
        /Home
              /Index.cshtml
我尝试使用以下代码注册路由,但无效:

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

            routes.MapRoute(
                name: "Admin",
                url: "Admin/{controller}/action/{id}",
                defaults: new { controller = "Lesson", action = "Index", id = UrlParameter.Optional }
                );

        }
你有什么建议吗?

你可以使用,它们是为这种隔离设计的,会给你一些开箱即用的隔离:

/Areas
     /Admin
         /Controllers
             /LessonController.cs
             /ExerciseController.cs    
         /Views
             /Lesson
                 /Index.cshtml
             /Exercise
                 /Index.cshtml
/Controllers    
    /HomeController.cs
/Views
    /Home
        /Index.cshtml

如果您不想遵循ASP.NET MVC支持的标准约定,则必须交换路由,使管理员路由高于默认路由,然后重新启动应用程序。

本文介绍了如何使用“区域”