ASP.NET MVC маршрутизация по строковому идентификатору? - PullRequest
13 голосов
/ 01 октября 2011

В ASP.NET 2, как мне создать маршрут, который позволяет искать объект (например, Product) по строковому идентификатору (например, ProductCode)? Маршрут поиска того же объекта по его целочисленному идентификатору (например, ProductId) является автоматическим, поэтому я не знаю, как он работает.

Автоматический маршрут по идентификатору:

/Product/1

Как мне также создать 2-й маршрут, который использует идентификатор строки?

/Product/red-widget

А как мне сделать так, чтобы оба маршрута были доступны?

1 Ответ

20 голосов
/ 01 октября 2011

Вы должны взглянуть на использование ограничения маршрута, чтобы сделать это. Смотри http://www.asp.net/mvc/tutorials/creating-a-route-constraint-cs

routes.MapRoute(
    "Product",
    "Product/{productId}",
    new {controller="Product", action="DetailsByName"},
    new {productId = @"\w+" }
 );

В приведенном выше примере регулярное выражение "\ w +" должно ограничиваться маршрутами, которые соответствуют только символам "слова" (для получения более подробной информации об используемых здесь шаблонах ознакомьтесь с документами регулярного выражения).

...