我目前有 3 个区域(当我开始工作时会出现更多区域)Login
:User
和Admin
. Global.asax
转到登录区域()中索引控制器的索引操作的默认路由Login\Index\Index
可以正常工作,这就是我映射它的方式:
routes.MapRoute(
"Default", // Route name
"{area}/{controller}/{action}/{id}", // URL with parameters
new { area = "Login", controller = "Index", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new[] { typeof(AppName.Areas.Login.Controllers.IndexController).Namespace }
);
3 个区域中的每一个都在 AreaRegistration 文件中像这样注册:
context.MapRoute(
"Admin_default",
"{area}/{controller}/{action}/{id}",
new { area = "Admin", controller = "Index", action = "Index", id = UrlParameter.Optional },
new[] { typeof(AppName.Areas.Admin.Controllers.IndexController).Namespace }
);
登录控制器索引操作获取用户登录详细信息,查找用户类型并将它们重定向到适当的区域......至少它应该这样做。从我可以收集到的搜索谷歌,重定向到特定区域的正确方法是:
return RedirectToAction("Action", "Controller", new { area = UserType });
这似乎不起作用,它只是重定向到Login\Controller\Action
,我不知道为什么。
在我试图弄清楚发生了什么时,我使用了这个:
var url = Url.Action("Action", "Controller", new { area = "Admin" });
它产生了相同的Login\Controller\Action
网址。
任何解决此问题的帮助将不胜感激