ActionLink包含路由匹配时的当前参数

时间:2011-02-01 14:03:08

标签: asp.net-mvc

我有一个以下控制器,其中包含一个带有单个参数的操作:

public class HomeController : Controller
{
  public ActionResult Index(int? param)
  {
    return View();
  }
}

我的MasterPage包含一个ActionLink,它应指向'/ Home / Index':

Html.ActionLink("MyActionLinkText", "Index", "Home")

现在我添加一条这样的路线:

routes.MapRoute(
  "MyRoute",
  "Home/Something/{param}",
  new { controller = "Home", action = "Index" },
  new { param = "\\d+" });

当我导航到'/ Home / Index'时,ActionLink指向'/ Home / Index'。没关系。 但当我导航到'Home / Something / 123'时,ActionLink也指向'Home / Something / 123'。

如果我以这种方式生成ActionLink,我会理解这种行为:

Html.ActionLink("test", "Index", "Home", new { param = 123 }, null)

但由于我没有提供任何路线值,我不明白这种行为。

我必须做什么,让ActionLink始终指向'/ Home / Index',独立于当前参数?

2 个答案:

答案 0 :(得分:1)

您需要为“Index / Home”案例添加更具体的路线。像这样的东西可能会做到这一点(在你自己的“MyRoute”路线之前添加它,否则它将不会被拾取):

routes.MapRoute(
    "MyRouteNoParam",
    "Home/Index",
    new { controller = "Home", action = "Index" });

答案 1 :(得分:1)

我使用了空路线变量

Html.ActionLink("MyActionLinkText", "Index", "Home", new {param = ""})