ASP.NET MVC подкаталоги - PullRequest
       5

ASP.NET MVC подкаталоги

2 голосов
/ 22 июня 2011

Я все еще новичок в MVC, поэтому я надеюсь, что это просто.

Мне нужны категории и подкатегории, возможно, с несколькими уровнями глубины, и я пытаюсь правильно организовать свой проект.Прямо сейчас я использую готовый проект MVC в VS2008.

Например, предположим, что я хочу перейти к: http://mysite.com/Products/Electronics/Computers/Laptops

Я могу сделать это, поставивLaptopsController в моем каталоге Controllers, каталог Latops с различными aspx-файлами в моих представлениях и добавление строки в мой класс Global.asax, которая отображает этот конкретный маршрут на соответствующий контроллер.

Но я надеюсь,есть способ автоматически отобразить маршрут, в то же время поддерживая чистую и организованную структуру каталогов в проекте, поскольку будет много разных категорий и продуктов.В идеале в моем проекте должны быть физические каталоги для контроллеров и представлений, соответствующие «каталогам» в пути URL.Но я не могу заставить это работать.

Я просмотрел несколько статей о том, как сделать большую настройку для вашей маршрутизации, но я предпочел бы не делать этого, если это возможно.Кажется, это было бы что-то встроенное, так что, может быть, я просто что-то упустил.

Если бы вы могли указать мне правильное направление, это было бы замечательно.

Ответы [ 2 ]

5 голосов
/ 22 июня 2011

Скорее всего, вам не нужно LaptopsController, просто ProductsController. В этом случае Electronics/Computers/Laptops просто сообщает ProductsController, какую категорию продуктов показывать (через значения маршрута).

0 голосов
/ 22 июня 2011

Если у вас возникли проблемы с маршрутизацией, попробуйте отладчик маршрутизации Haacked.

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx

Если вы хотите получить информацию обо всех продуктах и ​​получить контент, вы можете сделать следующее:

    routes.MapRoute("Products", "products/{*params}", 
                    new { controller = "Product",  action = "Details", params= "" });


   public ActionResult Details(string params) 
   {     
           // Split the params with '/' as delimiter. 
           string [] productParams = params.Split('/');
           if(productParams.Lengh > 0)
           {
             var category = productParams.Length > 0 ? productParams[0]: null;
             var subCategory = productParams.Length > 1 ? productParams[1]: null;
             var detailModel //get model information and build return..

             ViewData.Model = detailModel; 
             Return View("Details");
           }
           Return View("Error");

          //etc.



   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...