2008-08-18 5 views
3

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

Пример путь навигации:
Главная> Магазин> Продукты> Домашнее хозяйство> Кухонная посуда> Посуда> Cooksets> антипригарной

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

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

Могу ли я это сделать?

ответ

9

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

Просто определить маршрут как

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

для URL, такие как:

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

вы должны иметь ShopController с продукцией:

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(); 
    } 
2

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

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

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

Смежные вопросы