【发布时间】:2012-06-15 04:14:45
【问题描述】:
我有一个“项目”控制器和一个“仪表板”操作,它采用名为“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
我的解决方法是使用@Url.RouteUrl("ProjectsHome", new { accountID = "1111"}),但我想知道为什么 Html.ActionLink 没有选择我定义的路由并相应地格式化 URL?
另一个有趣的事实是,在控制器的一个代码中,我有类似 return RedirectToAction("Dashboard", "Projects", new { accountID = newAccount.ID }); 的东西,它可以按照我的预期构建 URL。
注意:除了通用的“包罗万象”的路线外,我没有定义其他路线。我使用 ASP.NET MVC3。
【问题讨论】:
-
不确定到底发生了什么,但我无法再重现它了。