Как я могу реализовать таблицы маршрутизации «естественной» схемы URL в ASP.NET MVC

Я хотел бы указать свои таблицы маршрутизации так, чтобы они казались более" естественными "

/Products
/Product/17
/Product/Edit/17
/Product/Create

Близко к конфигурации по умолчанию, но чтобы действие " Индекс " было сопоставлено с кратная форма имени контроллера и действия «Подробности» будет отображаться напрямую с идентификатором элемента, который следует непосредственно за именем контроллера.

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

routes.MapRoute(
    "ProductsList",
    "Products",
    new { controller = "Product", action = "Index" }
);
routes.MapRoute(
    "ProductDetails",
    "Product/{id}",
    new { controller = "Product", action = "Details" }
);

/*
 * Ditto for all other controllers
 */

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Приведенный выше код слишком подробен f или мои вкусы, и имеет недостаток в том, что каждый контроллер нужно упомянуть как минимум дважды, чтобы повсеместно применить этот шаблон URL.

Есть ли способ обобщить это, или в данном случае я вынужден заниматься физическим трудом?

8
задан Leniel Maccaferri 8 February 2012 в 05:33
поделиться