【问题标题】:ASP.NET MVC: Always auto link to a default area, unless an area is specifiedASP.NET MVC:始终自动链接到默认区域,除非指定区域
【发布时间】:2011-06-18 23:03:24
【问题描述】:

我有一个没有区域的现有应用程序。但是,我正在添加一个全新的部分,因此我创建了一个区域。所以我有一个区域和默认区域。

所以,例如:

默认路由 = /Invoice/Create

区域路线 = /TAE/Port/Create

这两个链接都有效。但是,当我导航到 TAE 区域部分时,所有链接都会更改为在该 TAE 区域内。例如 /TAE/Invoice/Create

我可以强制他们没有区域添加新的 { area = "" } 到操作链接,但这涉及修改应用程序中的每个链接。

是否可以让未指定区域的操作链接始终转到默认区域,而不管当前页面在哪个区域?

global.asax.cs

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { area="", controller = "Home", action = "Index", id = "" }, // Parameter defaults
            new string[] { "BankingDB.Controllers" } //namespaces
        );

    }

TAEAreaRegistration.cs

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "TAE_default",
            "TAE/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }

链接到 TAE 区域:

<%= Html.ActionLink("Create", "Create", "Port" , new { area = "TAE"}, new {}) %>

普通区链接:

<%= Html.ActionLink("Create", "Create", "Invoice") %>

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-routing asp.net-mvc-areas


    【解决方案1】:

    编辑: 我建议,如果你要在任何地方使用一个区域,你应该把它们都放在区域中。

    否则,您可以使用该签名覆盖扩展名并将默认设置为 area = "" 然后您将永远不需要编写它:D This is a link to what you would want to overwrite ;D

    额外编辑:只是为了确保你理解我给你的道路。您可以轻松地创建一个新的扩展程序,该扩展程序将在参数区域空白已填充的情况下调用该函数。或者总是只是覆盖大声笑祝你好运

    【讨论】:

    • 如前所述“我可以强制他们没有区域添加新的 { area = "" } 到操作链接,但这涉及修改应用程序中的每个链接。”
    • 哦,对不起,虽然我不得不说在区域内没有所有东西是不好的做法。如果您开始将某些东西放在区域中,则应将所有控制器放在区域中。我会研究一下默认设置,明天我会修改我的答案。
    • @Alistair,嘿,给我一些反馈,如果它解决了你的问题,请接受答案,否则我们可以找到其他解决方案
    • 您的解决方案仍然涉及修改应用程序中包含链接的每个页面。我一直在寻找可以在一个地方做的事情。
    • 对了,其他的链接我都修改过了,不用担心。
    猜你喜欢
    • 2013-06-02
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-09
    • 2011-08-07
    • 2011-06-19
    相关资源
    最近更新 更多