MVC - 获取路线信息

时间:2011-10-18 19:16:15

标签: asp.net-mvc asp.net-mvc-3

我在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/listhttp://localhost/employee/list,他们按预期在Home控制器上点击了Index方法。

我想根据请求数据生成网址

因此,如果当前网址是localhost / managers / list,我想生成一个网址

http://localhost/managers/list/3(有些身份证)

如果当前网址是localhost / employees / list,我想生成

http://localhost/employees/list/3(有些身份证)

我试过了:

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

但它始终生成

/雇员/列表/ 3

即使网址是管理员/列表。

我正在寻找mvc这样做的方法而不是使用Request.Url。感谢。

1 个答案:

答案 0 :(得分:0)

嗯,你的控制器总是在家,行动总是索引。因此,当您要求路由从中创建URL时,它会抓取第一个匹配的 - 即Employee / List / {id}。 你不能“强迫”它使用第二个。但是,如果您非常确定您的路线名称是否可靠,那么您可以使用 RouteLink 代替ActionLink(或Url.RouteUrl而不是Url.Action),并指定所需路线的路线名称从生成URL使用。

@Url.RouteUrl("Route2", new { id = 3 })