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

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

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

Главная> Магазин> Товары> Домашнее хозяйство> Кухни> Кухонная посуда> Наборы посуды> Антипригарное покрытие

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

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

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

Ответы [ 2 ]

10 голосов
/ 31 августа 2008

Зак, если я правильно понимаю, вы хотите неограниченную глубину подкатегорий. Ничего страшного, начиная с 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();
    }
2 голосов
/ 18 августа 2008

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

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

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

...