【发布时间】:2012-11-16 09:45:31
【问题描述】:
目前我有 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 url。
任何解决此问题的帮助将不胜感激
【问题讨论】:
标签: c# asp.net-mvc-3 routing asp.net-mvc-areas asp.net-mvc-3-areas