我有以下路由,在浏览器中键入它们并正常路由,但如果我使用Html.ActionLink,它会尝试使用DefaultStuff路由。
路线
_routes.MapStuffRoute(
"DefaultStuff",
"stuff/{controller}/{id}",
new { id = UrlParameter.Optional },
new[] { typeof(BaseApiController).Namespace });
_routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { typeof(BaseController).Namespace });
网页
@Html.ActionLink("Job Queues", "Index", "Job") // generates http://localhost/stuff/job?action=Index
我错过了允许ActionLink生成http://localhost/stuff/index的内容。反转路径ActionLink是正确的,但Stuff不起作用。只需注意,StuffRoute会根据请求中的信息设置操作名称。
答案 0 :(得分:1)
好像你真的想把控制器“Job”映射到东西。目前,您的“DefaultStuff”路由无法解析操作,因此它将其作为查询字符串值放入。
_routes.MapRoute(
"DefaultStuff",
"stuff/{action}/{id}",
new { controller="Job", id = UrlParameter.Optional },
new[] { typeof(BaseApiController).Namespace });