Могу ли я сгенерировать маршруты ASP.NET MVC из файла Sitemap?

Я подумываю изучить структуру ASP.NET MVC для будущего проекта. Могу ли я использовать расширенную маршрутизацию для создания длинных URL-адресов на основе иерархии карты сайта?

Пример пути навигации:

Домой> Магазин> Продукты> Для дома> Кухня> Посуда> Кухонные гарнитуры> Антипригарное покрытие

Типичный (я думаю) URL-адрес MVC:
http://example.com/products/category/NonstickCooksets

Желаемый URL:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

Я могу это сделать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
4
0
2 010
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Маршрутизация MVC позволяет вам определять практически любую структуру, которую вы хотите, вам просто нужно определить, что каждая из частей означает семантически. Вы можете иметь "жестко запрограммированные" биты, например "магазин / товары", а затем определить остальные как переменные, "{категория} / {подкатегория} / {специальность}" и т. д.

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

Хотя маршрут по умолчанию представляет собой простую настройку типа Controller, Action, Id, это, конечно, не предел того, что вы можете сделать.

Ответ принят как подходящий

Зак, если я правильно понимаю, вам нужна неограниченная глубина подкатегорий. Ничего особенного, поскольку в MVC Preview 3 (я думаю, 3 или 4) эта проблема решена.

Просто определите маршрут, например

"{контроллер} / {действие} / {* categoryPath}"

для URL-адреса, например:

http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick

у вас должен быть ShopController с действием Products:

public class ShopController : Controller
{
...
    public ActionResult Products(string categoryPath)
    {
        // the categoryPath value would be
        // "household/kitchen/cookware/cooksets/nonstick". Process it (for ex. split it)
        // and then decide what you do..
        return View();
    }

Другие вопросы по теме