我有一个以下控制器,其中包含一个带有单个参数的操作:
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',独立于当前参数?
答案 0 :(得分:1)
您需要为“Index / Home”案例添加更具体的路线。像这样的东西可能会做到这一点(在你自己的“MyRoute”路线之前添加它,否则它将不会被拾取):
routes.MapRoute(
"MyRouteNoParam",
"Home/Index",
new { controller = "Home", action = "Index" });
答案 1 :(得分:1)
我使用了空路线变量
Html.ActionLink("MyActionLinkText", "Index", "Home", new {param = ""})