Создание подпапок в контроллере

Как я могу сделать в ASP.NET MVC 1, чтобы взять подпапки. Например, если на контроллере установлена ​​следующая структура папок:

/Controller
  /Blog
     ViewsController.cs
     ArticlesController.cs
  /Customers
     SalesController.cs
     ProductsController.cs
  HomeController.cs

Я хотел бы иметь следующую структуру папок в представлении, каждый вид нашел ваш контроллер:

/Views
  /Blog
     /Views
        Index.aspx
        Admin.aspx
        Show.aspx
     /Articles
        Show.aspx
        Admin.aspx
  /Customers
     /Sales
        Index.aspx
        Totals.aspx
     /Products
        Index.aspx
        Promotions.aspx
  /Home
     Index.aspx

Ответ 1

Вы можете сделать это с помощью маршрутов, т.е.

routes.MapAreaRoute("Blogs", 
        "Blog/Views/{controller}/{action}/{id}", 
        new { controller = "Views", action = "Index", id = "" });

Казалось бы, это соответствует вашим потребностям, учитывая приведенные выше данные.

Ответ 2

Это функция, добавленная в ASP.NET MVC 2.0. Он называется Areas.

Ответ 3

В MVC 2 или выше вам просто нужно щелкнуть правой кнопкой мыши по проекту, затем наложить курсор над надстройкой, затем нажмите "Область" и введите имя области. Все автоматически создано для вас!

Ответ 4

Как отметил Дарин, Районы, похоже, "предназначены" для разработчиков для достижения этого. Если вы можете подождать до февраля, вы можете использовать предварительный просмотр MVC 2. Тем не менее, разработчики делали подобные вещи перед введением областей с MVC 2. Если вам нужно более быстрое решение, вы можете поместить свои контроллеры в структуру папок, указанную выше. Предполагая, что контроллеры находятся в пространстве имен в соответствии с их папкой (т.е. Project.Controllers.Blog), вы просто добавляете дополнительный параметр в конец, который указывает пространство имен для контроллера при инициализации ваших маршрутов.

Например:

routes.MapAreaRoute("Blog", 
    "Blog/{controller}/{action}/{id}", 
    new { controller = "Articles", action = "Index", id = "" },
    "Project.Controllers.Blog");