ASP.NET MVC: всегда автоматическая ссылка на область по умолчанию, если область не указана - PullRequest
1 голос
/ 01 февраля 2011

У меня есть приложение, в котором нет областей.Тем не менее, я добавляю совершенно новый раздел, поэтому у меня есть созданная область.Таким образом, у меня есть одна область и область по умолчанию.

Так, например:

Маршрут по умолчанию = / Счет / Создать

Маршрут области = / TAE / Порт / Создать

Обе эти ссылки работают.Однако, когда я перехожу к разделу области TAE, все ссылки изменяются, чтобы быть в пределах этой области TAE.например / TAE / Invoice / Create

Я могу заставить их не иметь области, добавляя новый {area = ""} к ссылке действия, но это включает в себя изменение каждой ссылки в приложении.

Возможно ли, чтобы actionlink без указанной области всегда переходил в область по умолчанию, независимо от того, в какой области находится текущая страница?

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") %>

1 Ответ

0 голосов
/ 05 апреля 2011

Edit: Я рекомендую, чтобы, если вы собираетесь использовать область в любом месте, вы должны сделать их все в областях.

В противном случае вы можете перезаписать расширение этой сигнатурой и установить значение по умолчанию для области = "", тогда вам никогда не понадобится писать это Это ссылка на то, что вы хотите перезаписать; D

Дополнительное редактирование: Просто чтобы убедиться, что вы поняли дорогу, которую я вам дал. Вы можете легко создать новое расширение, которое будет вызывать эту функцию с уже заполненной областью параметров или всегда просто перезаписать LOL удачи

...