MVC с областями - Html.ActionLink возвращает неверный URL / маршрут?

Я использую MVC3 и имею области в моем приложении. В общем, все работает нормально, я могу перейти к своей области (например, Admin = Area, Controller = Department) следующим образом:

<%: Html.ActionLink("Departments", "DepartmentIndex", "Department", new { area = "Admin"}, null )%>

Однако я заметил, что если я не укажу область в моем ActionLink, например

<%: Html.ActionLink("Test", "Index", "Home")%>

Он перестанет работать, если я перейду в область «Администратор», т. Е. Теперь мой URL http: // localhost / myproj / Admin / Home / Index вместо того http: // localhost / myproj / Home / Index

Есть идеи о том, что здесь происходит?

Все мои маршруты являются значениями по умолчанию при создании приложения MVC / областей. то есть

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }, 
            new[] { "MyProj.Controllers" } 
        );
    }

И моя регистрация района

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

Это сделано намеренно? В этой публикации предлагается использовать RouteLink вместо ActionLink: скажем, чтобы использовать RouteLink Требуется ли значение маршрута "area" в ссылке на действие, если приложение было сгруппировано в области?

6
задан Community 23 May 2017 в 11:45
поделиться