【问题标题】:MVC 5 ActionLink default area valueMVC 5 ActionLink 默认区域值
【发布时间】:2015-11-25 21:13:54
【问题描述】:

我在现有项目中添加了一个区域,现在可以通过以下链接导航到该区域:

@Html.ActionLink("Dashboard", "Index", "Dashboard", new { area = "Admin" }, null)

导航面板中的所有其他链接均未更改,如下所示:

@Html.ActionLink("My Properties", "Index", "Property")

问题是,现在当我导航到仪表板并且旧链接尝试在该区域内导航我时,我的解决方法是:

@Html.ActionLink("My Properties", "Index", "Property", new { area = "" }, null)

有没有其他方法可以为现有链接设置默认空白区域?把所有的链接都追下来更新,有点烦人

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5


    【解决方案1】:

    在 RouteConfig.cs 中设置默认区域应该会有所帮助:

    你可以这样做:

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new {controller = "Home", action = "Index", id = UrlParameter.Optional }
    ).DataTokens.Add("area", "");
    

    或语法稍有不同:

    routes.MapRoute(
        "Default",
        "{controller}/{action}/{id}",
        new {controller = "Home", action = "Index", id = UrlParameter.Optional }
    ).DataTokens = new RouteValueDictionary(new { area = "" });
    

    【讨论】:

    • 这不起作用,因为当我在该区域时,action_link 代码将尝试与区域/RouteConfig 中的通用路由匹配
    【解决方案2】:

    不幸的是,这不是一个简单的问题。您需要更新链接。如果您不想在每个操作中写入字符串,您可以创建自定义 ActionLink 扩展方法 Html.DefaultActionLink 或类似的东西,并使用它来添加一个空白区域(全局替换所有链接)。

    【讨论】:

    • 查看@user2771704 看起来是一个有效的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2015-06-09
    • 2017-01-22
    • 2011-03-18
    • 1970-01-01
    相关资源
    最近更新 更多