我在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,他们按预期在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。感谢。
答案 0 :(得分:0)
嗯,你的控制器总是在家,行动总是索引。因此,当您要求路由从中创建URL时,它会抓取第一个匹配的 - 即Employee / List / {id}。 你不能“强迫”它使用第二个。但是,如果您非常确定您的路线名称是否可靠,那么您可以使用 RouteLink 代替ActionLink(或Url.RouteUrl而不是Url.Action),并指定所需路线的路线名称从生成URL使用。
@Url.RouteUrl("Route2", new { id = 3 })