Есть ли причина, по которой вы не можете просто использовать следующее со встроенным обработчиком маршрута:
routes.MapRoute("LocationRoute",
"{countryname}/{statename}/{cityname}",
new { controller = "Location", action = "GetLocations" });
Это может конфликтовать с маршрутом по умолчанию "{controller}/{action}/{id}", но это в любом случае произойдет с вашей текущей системой (если только вы не создадите собственный Route, наследующий от System.Web.Routing.RouteBase
, а не чем пользовательский обработчик маршрутов). Обработчик маршрута предназначен для управления действиями ПОСЛЕ извлечения данных маршрута. Поскольку вы все еще используете Controller и Action, вы все равно сможете использовать файл MvcRouteHandler
. Если вы хотите настроить способ извлечения данных о маршруте, возможно, вам понадобится собственный маршрут.
Кстати, если вы хотите использовать маршрут, который не включает имена контроллеров и действий, используйте Html.RouteLink
. ActionLink
— это просто оболочка, которая помещает контроллер и действие в RouteValuesDictionary
и вызывает тот же внутренний помощник, что и RouteLink
.
Хотя в этом случае у маршрута по-прежнему есть Controller и Action ("Location" и "GetLocations"), так что вы все равно можете использовать ActionLink
. Я думаю, что ActionLink
позволяет вам указать имя маршрута, поэтому, если вы дадите своему маршруту имя, вы можете указать это имя в ActionLink
, и он будет использовать этот маршрут для создания URL-адреса (я могу ошибаться в этом и если это так, вы все равно можете использовать RouteLink
и вручную добавить значения контроллера и маршрута действия)
person
Andrew Stanton-Nurse
schedule
14.04.2009