我面临的问题是我有 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
}