在rails中,我可以创建一个名称空间,以便将视图封装在给定名称(或URL前缀)
中我想要做的是创建一个命名空间(或我相信的区域?),它将封装给定名称中的所有管理员控制器。
例如,我想创建一个Admin命名空间,无论何时我去www.myapp.com/admin/,它都会让我的控制器管理员使用索引方法,每当我去www.myapp时。 com / admin / products它应该使用索引方法调用产品控制器,依此类推,因为我还想将这些控制器限制为必须以其身份登录的人。
URL和路由明智,我怎样才能完成前面提到的?
答案 0 :(得分:4)
asp.net mvc中的功能 称为区域。
在Visual Studio中右键单击项目,然后单击“添加区域”。
您现在将拥有一个子文件夹,其中包含Views,Controllers和Shared文件夹的文件夹。此外,还会在项目中添加一条路线。
<强>障碍:强>
如果您的某个区域内有HomeController
,则会出现问题,因为它会与网站根目录的HomeController
路由冲突。史蒂文桑德森在他的书中解决了这个问题:
将您的默认路线更改为:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", // Parameter defaults
id = UrlParameter.Optional },
new [] { "MyAppName.Controllers" } // Prioritized namespace
);
请参阅MDSN Articles。
答案 1 :(得分:0)
库 MvcCodeRouting 允许您使用命名空间层次结构组织控制器,视图和URL,它反映在您的控制器上并自动为它们创建路径。