MVC - Получение информации о маршруте - PullRequest
2 голосов
/ 18 октября 2011

У меня есть следующие маршруты, определенные в global.asax

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


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

Когда я добрался до http://localhost/managers/list и http://localhost/employee/list, они достигли метода Index на контроллере Home, как и ожидалось.

Я хотел бы создать URL на основе данных запроса

Так что если текущим URL является localhost / manager / list, я хочу сгенерировать URL сказать

http://localhost/managers/list/3 (некоторый идентификатор)

и если текущим URL является localhost / employee / list, я хочу создать

http://localhost/employees/list/3 (некоторый идентификатор)

Я пытался:

@Url.RouteUrl(new { controller = ViewContext.RouteData.Values["controller"], 
                      action = ViewContext.RouteData.Values["action"], id =  3})

но всегда генерирует

/ Employee / Список / 3

, даже если URL - это менеджеры / список.

Я ищу mvc способ сделать это и не использовать Request.Url. Спасибо.

1 Ответ

0 голосов
/ 19 октября 2011

Ну, ваш контроллер всегда дома, а действие всегда индексируется.Поэтому, когда вы запрашиваете у маршрутизации создание URL-адреса из него, он выбирает первый, который соответствует - и это Employee / List / {id}.Вы не можете «заставить» его использовать второй.Но если вы уверены, что названия ваших маршрутов будут четкими и удобными, вы можете использовать RouteLink вместо ActionLink (или Url.RouteUrl вместо Url.Action) и указать имя маршрута для маршрута, который вы хотите использовать.использовать при генерации URL.

@Url.RouteUrl("Route2", new { id = 3 }) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...