ASP.NET MVC中的命名空间等效?

时间:2011-03-17 17:46:30

标签: c# asp.net asp.net-mvc routing

在rails中,我可以创建一个名称空间,以便将视图封装在给定名称(或URL前缀)

我想要做的是创建一个命名空间(或我相信的区域?),它将封装给定名称中的所有管理员控制器。

例如,我想创建一个Admin命名空间,无论何时我去www.myapp.com/admin/,它都会让我的控制器管理员使用索引方法,每当我去www.myapp时。 com / admin / products它应该使用索引方法调用产品控制器,依此类推,因为我还想将这些控制器限制为必须以其身份登录的人。

URL和路由明智,我怎样才能完成前面提到的?

2 个答案:

答案 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

Video on Asp.net Areas.

Good article by Steven Sanderson:

答案 1 :(得分:0)

MvcCodeRouting 允许您使用命名空间层次结构组织控制器,视图和URL,它反映在您的控制器上并自动为它们创建路径。