0

在 Global.asax.cs

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Menu", PageName="Index" } // Parameter defaults
        );

routes.MapRoute(
            "NewRoute", // Route name
            "{controller}/{action}/{PageName}", // URL with parameters
            new { controller = "Home", action = "Menu", PageName = UrlParameter.Optional } // Parameter defaults
        );

我希望此参数仅在第一个主页加载PageName时为“ ”。Index在菜单链接单击之后,我需要传输与PageName链接对应的参数值,而不是值“索引”。因此我写了一个新的 MapRoute,其中 PageName 是可选的,而不是“索引”。

所以在我的_Layout.cshtml

foreach(...)
{
     @Html.ActionLink(item.Title, "Menu", "Home", new { PageName = item.PageName, role = "Admin" }, null)

}

目前对于所有链接单击,仅采用参数值“索引”,这是无意的。我希望这个'索引'是'home'或'aboutUS'或''......取决于用户点击的链接。

经过一番搜索,我发现 RouteLink 可以更改默认路由...

 @Html.RouteLink(item.Title, "NewRoute", new { PageName = item.PageName })

实际上,我需要为 PageName 指定一个默认值,并且它应该在链接点击时更改。

请告诉我 routelink 是否是此问题的解决方案。

4

1 回答 1

1

在 Global.asax.cs 中,将 {ID} 更改为 {PageName}

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{pagename}", // URL with parameters
        new { controller = "Home", action = "Menu", PageName="Index" } // Parameter defaults
    );

无需添加新路线,也不需要 RouteLink。ActionLink 本身有效。

于 2013-04-03T06:50:13.547 回答