子文件夹中的控制器和视图

时间:2013-01-16 21:43:51

标签: asp.net-mvc-4 directory-structure

我正在使用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 }
                );

        }

你有什么建议吗?

2 个答案:

答案 0 :(得分:10)

你可以使用areas,它们是专门为这种类型的隔离而设计的,它会为你提供一些开箱即用的分离:

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

如果您不想遵循ASP.NET MVC支持的标准约定,则必须write and register a custom view engine

答案 1 :(得分:1)

将您的路线交换为圆形,使管理员高于默认路线,然后重新启动应用程序。