【问题标题】:asp.net mvc actionlink using wrong routeasp.net mvc actionlink 使用错误的路由
【发布时间】:2012-04-20 20:13:02
【问题描述】:

我遇到了 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,默认管理路由是这样我可以稍后创建链接到 /admin/controller/action 的任何链接管理页面,但我希望默认生成的 url 不在管理员之下。

【问题讨论】:

    标签: asp.net-mvc-3 asp.net-mvc-2 routing


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 啊,我误会了。在这种情况下,您要么必须交换现有规则,然后手动为管理页面创建路由。或者您可以添加一个管理区域。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2016-07-30
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多