我有一个“项目”控制器和一个“仪表板”操作,它采用一个名为“accountID”的参数。
public ActionResult Dashboard(String accountID)
{
return View();
}
我的路线定义如下:
routes.MapRoute(
"ProjectsHome",
"{accountID}/projects",
new { controller = "Projects", action = "Dashboard" }
);
这个想法是有一个像 /1111/projects 这样的 URL,其中 1111 代表 accountID。然后 URL 将执行 Projects 控制器的 Dashboard 操作。
我面临的问题是 @Html.ActionLink("Projects", "Dashboard", "Projects", new { accountID = "1111" }, null)
生成像 /Projects/Dashboard?accountID=1111 这样的 URL,我期待像 /1111/projects 这样的东西
我的解决方法是使用@Url.RouteUrl("ProjectsHome", new { accountID = "1111"})
,但我想知道为什么 Html.ActionLink 没有选择我定义的路由并相应地格式化 URL?
另一个有趣的事实是,在控制器的一个代码中,我有一些类似的东西 return RedirectToAction("Dashboard", "Projects", new { accountID = newAccount.ID });
,它可以按照我的预期构建 URL。
注意:除了通用的“包罗万象”的路线外,我没有定义其他路线。我使用 ASP.NET MVC3。