我有一个有两个区域的项目。这两个区域允许不共享任何控制器或视图的不同成员类型(例如学生和教师)。但是,它们共享联系和支持页面等的根控制器。
目前,我使用命名空间在每个区域内进行路由。
我想做类似的事情,但优先考虑命名空间,以便它们没有冲突的控制器:
context.MapRoute(
"Student_Default",
"{controller}/{action}/{id}",
new { area = "Student", controller = "Home", action = "Index", id = UrlParameter.Optional },
new { RoleConstraint = new AuthenticationConstraint() },
new[] { "Test.Web.Areas.Student.Controllers", "Test.Web.Controllers" }
);
或者我尝试使用“UseNamespaceFallback”但在所有我不想要的区域进行搜索。
我还没试过的其他事情只是在用户登录时注册该区域。这是一种可接受的方法吗?
此外,我可以只映射每个页面,但可能会有很多,每个页面都会很麻烦。
所以问题是如何在没有相互可用区域的情况下使两个区域都可以使用根控制器?如果需要更多信息,请告诉我,我很乐意提供更多关于我正在尝试做的事情。
答案 0 :(得分:0)
在考虑周末之后,我决定使用“UseNamespaceFallback”。我还实现了用户角色来管理每个用户可以访问的区域。我认为这是一种更好的方法,因为我已经阅读过建议永远不要使用命名空间作为身份验证的方法。