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

标签 c# asp.net asp.net-mvc routes

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

我想做的是创建一个命名空间(或者我认为是区域?),它将所有管理员 Controller 封装在一个给定的名称中。

例如,我想创建一个 Admin 命名空间,每当我访问 www.myapp.com/admin/时,它都会使用 index 方法让我成为 Controller 管理员,并且每当我访问 www.myapp 时。 com/admin/products 它应该使用 index 方法调用产品 Controller 等等,因为我也想将这些 Controller 限制为必须登录的人。

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

最佳答案

在 asp.net mvc 中,该功能实际上 称为 Areas

您在 Visual Studio 中右键单击您的项目,然后单击“添加区域”。

您现在将拥有一个子文件夹,其中包含 Views、Controllers 文件夹和 Shared 文件夹。还将路由添加到项目中。

障碍: 如果您的某个区域中有一个 HomeController,就会出现问题,因为它会与网站根目录的 HomeController 路由冲突。 Steven Sanderson 在他的书中解决了这个问题:

将您的默认路由更改为此:

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:

关于c# - ASP.NET MVC 中等效的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5343053/

相关文章:

c# - 调用 RegisterAllAreas 时出现 FatalExecutionEngineError

c# - 如何禁用 GridView 行的单元格?

javascript - Kendo Grid Edit Cancel 从网格中删除行

c# - 运算符 '>' 不能应用于查询中类型为 'string' 和 'string' 的操作数

c# - 事先检查 `System.Activator.CreateInstance(Of T)` 是否会失败

c# - MVC - 将所有列表框项目传递回 Controller

javascript - 如何让javascript文件在aspx中工作?

asp.net-mvc - MVC4 WebAPI 不压缩 GET 响应

asp.net-mvc - 当在局部 View 内按下按钮时,父表单将被验证

c# - 如何获取 DataGridView 行值并将其存储在变量中?