Nano Hash - криптовалюты, майнинг, программирование

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

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

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

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

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

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

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

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


Ответы:


1

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

22.06.2011
  • +1. Разъяснение на примере маршрута: routes.MapRoute("ProductRoute", "Products/{department}/{category}/{product}" new { controller = "Products" }); 22.06.2011
  • Спасибо вам обоим. В этом есть смысл. Но похоже, что это будет отлично работать, если я использую только одно глобальное представление для всех продуктов (как в данном случае я). Но предположим, что мне нужны разные представления для каждой категории или каждого отдела - могу ли я иерархически организовать их и при этом вызывать их из одного контроллера? 22.06.2011
  • Вы можете указать в методе контроллера любое желаемое представление. 22.06.2011
  • Понятно - передача структуры подкаталогов в метод View () у меня работает, поэтому мой единственный контроллер может вызывать View(string.Format("{0}/{1}/{2}/{3}", department, category, product, action), и, похоже, он работает именно так, как я хочу. Всем спасибо. 22.06.2011

  • 2

    ЕСЛИ у вас возникли проблемы с маршрутизацией, попробуйте отладчик маршрутизации 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.
    
    
    
       }
    
    22.06.2011
  • Спасибо, проверю штучку Haacked - вроде будет полезно. 22.06.2011
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..