Asp.net mvc 5 与控制器同名的MVC区域
尝试设置MVC路由(im使用MVC5),这将允许我执行以下操作:Asp.net mvc 5 与控制器同名的MVC区域,asp.net-mvc-5,asp.net-mvc-routing,Asp.net Mvc 5,Asp.net Mvc Routing,尝试设置MVC路由(im使用MVC5),这将允许我执行以下操作: 事物/索引 事物/创造 事物/报告/索引 事物/报告/某物报告 因此,在默认的“区域”(即无区域)中,我添加了一个“东西”控制器。 在我的'Thing'控制器中,我有'Index'和'Create'动作 然后我添加了一个“东西”区域。我在这个区域添加了一个“Reports”控制器,在这个控制器中我添加了“Index”和“SomeReport”操作 在我的全球范围内-我打电话: AreaRegistration.Register
- 事物/索引
- 事物/创造
- 事物/报告/索引
- 事物/报告/某物报告
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
路线定义如下:
context.MapRoute(
"Thing_default",
"Thing/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
namespaces: new[] { "MyApplication.Areas.Thing.Controllers" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces: new string[] { "MyApplication.Controllers" }
);
通过这种配置,我得到了以下结果
- 好的
- 事物/索引-404
- 事物/创造-404
- 事情/报告-好的
- 事物/报告/索引-正常
- 事物/报告/某些报告-好的
任何帮助都将不胜感激
Thing/Index
表示您在Thing
区域调用IndexController
的Index()
方法(不存在)。是的,我理解它为什么不起作用。正在尝试了解如何配置它,以便它能够正常工作。您需要为Thing/Index
和Thing/create
创建特定的路由(它们必须在其他路由之前)-例如url:“Thing/Index”默认值:{controller=“Thing”,action=“Index”}
确定。这有点糟糕:(在这种情况下-我可能在每一个动作上都有一个属性路由。或者只是更改区域的名称,这样它就不同于控制器:)东西/索引
意味着你调用东西
区域(不存在)中索引控制器
的方法是的,我明白它为什么不起作用。正在尝试了解如何配置它,以便它能够正常工作。您需要为Thing/Index
和Thing/create
创建特定的路由(它们必须在其他路由之前)-例如url:“Thing/Index”默认值:{controller=“Thing”,action=“Index”}
确定。这有点糟糕:(在这种情况下,我可以在每一个动作上都有一个属性路由。或者只是更改区域的名称,这样它就不同于控制器:)