2011-02-01 49 views
1

我有一个包含一个动作与一个单一的参数如下控制器:ActionLink的包含当前参数时,路由匹配

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

我的母版页包含的ActionLink应该指向“/首页/索引”:

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

现在我补充这样的路线:

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

当我浏览到 '/首页/索引'该ActionLink的点“/首页/索引”。没关系。 但是,当我浏览到“首页/事/ 123”的ActionLink的还指出,“家庭/事/ 123”。

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

但因为我不提供任何路由值,我不明白这种行为:

如果我产生的ActionLink的这样,我会理解这种行为。

我有什么做的,让ActionLink的总是指向“/首页/索引”,自主承担从目前的参数?

回答

1

你需要添加一个更具体的路线为“索引/主页”的情况。像这样的东西可能会做的伎俩(你自己的“MyRoute”路线之前添加它,否则它不会被拾起):

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

我用了一个空的路径变量

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