2011-02-01 84 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 = ""})