3

我遇到了 html.actionlink 的问题。我定义了两条路线:

routes.MapRoute(
                "AdminDefault",
                "Admin/{controller}/{action}/{id}",
                new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
routes.MapRoute(
                "Default",
                "{controller}/{action}/{id}",
                new { controller = "Page", action = "Details", id = "0" }
            );

当我希望它使用默认控制器时,actionlink 正在使用 AdminDefault。如何让它使用默认路由而不使用路由链接?

添加更多信息。我有一个简单的操作(home/index),它显示了一个视图(index.cshtml),在那个视图中我有:

@Html.ActionLink("About", "About", "Home")

当我希望它是“/Home/About”时,它会生成一个“/Admin/Home/About”的 url,defaultadmin 路由是这样我可以稍后创建链接到 /admin/controller/action 的任何管理页面,但我希望默认生成的 url 不在管理员之下。

4

1 回答 1

2

如果您从区域中的视图中使用 Html.ActionLink,则默认情况下它将将该区域传递给该链接。

要覆盖它,您可以像这样调用 Html.ActionLink :

@Html.ActionLink("linkText", "actionName", "controllerName", new {Area = "AreaName"}, null);

其中'new {Area = "AreaName"}' 是路由对象值,'null' 是 html 属性。

因此,您可以使用 'new {Area = ""}'

于 2012-04-08T01:48:19.027 回答