Могу ли я сгенерировать ASP.NET Маршруты MVC из карты сайта?
-
08-06-2019 - |
Вопрос
Я подумываю о том, чтобы научиться ASP.NET MVC
основа для предстоящего проекта.Могу ли я использовать расширенную маршрутизацию для создания длинных URL-адресов на основе иерархии sitemap?
Пример навигационного пути:
Главная страница > Магазин > Товары > Домашнее хозяйство > Кухня > Посуда > Кухонные наборы > Антипригарное покрытие
Типичный (я думаю) URL-адрес MVC:
http://example.com/products/category/NonstickCooksets
Желаемый URL-адрес:
http://example.com/shop/products/household/kitchen/cookware/cooksets/nonstick
Могу ли я это сделать?
Решение
Зак, если я правильно понимаю, ты хочешь неограниченную глубину подкатегорий.Ничего особенного, поскольку MVC Preview 3 (я думаю, 3 или 4) была решена.
Просто определите маршрут следующим образом
"{контроллер}/{действие}/{*Путь к категории}"
для 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();
}
Другие советы
Маршрутизация MVC позволяет вам определить практически любую структуру, которую вы хотите, вам просто нужно определить, что каждая из частей означает семантически.У вас могут быть "жестко запрограммированные" биты, например "магазин / продукты", а затем определить остальные как переменные "{категория} / {подкатегория} / {специальность}" и т.д.
Вы также можете определить несколько маршрутов, которые все будут привязаны к одной и той же конечной точке, если хотите.По сути, когда URL-адрес поступает в ваше приложение MVC, он просматривает таблицу маршрутизации, пока не найдет соответствующий шаблон, заполняет переменные и передает запрос соответствующему контроллеру для обработки.
Хотя маршрут по умолчанию - это простая настройка типа контроллер, действие, идентификатор, это, конечно, не предел того, что вы можете сделать.