0

我面临的问题是我有 2 个同名的控制器。一个在主控制器文件夹中,另一个在我的管理区域的控制器文件夹中。

直接调用动作结果可以正常工作:

MySite/Admin/Account/GetAccount?userId=1

通过路由调用不起作用

MySite/Admin/User/1/Account

知道我做错了什么吗?

应用程序_开始

AreaRegistration.RegisterAllAreas()

路由配置

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 }, // Parameter defaults
        new[] { "MyCompany.Controllers" }
    );
}

管理区域注册

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

    context.MapRoute(
        "GetUserAccount",
        "Admin/User/{userId}/Account",
        new { controller = "Account", action = "GetAccount" },
        new[] { "MyCompany.Areas.Admin.Controllers" }
    );
}

我在 Areas/Admin/AccountController 中的操作结果

public ActionResult GetAccount(string userId)
{
    // return Account Type
}
4

1 回答 1

2

我认为您应该更改帐户的头寸并再次检查

 context.MapRoute(
        "GetUserAccount",
        "Admin/User/{userId}/Account",
        new { controller = "Account", action = "GetAccount" },
        new[] { "MyCompany.Areas.Admin.Controllers" }
    );
context.MapRoute(
        "Admin_default",
        "Admin/{controller}/{action}/{id}",
        new { action = "Index", id = UrlParameter.Optional }
    );
于 2013-06-14T22:46:52.960 回答