Asp.net mvc 5 与控制器同名的MVC区域

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

尝试设置MVC路由(im使用MVC5),这将允许我执行以下操作:

  • 事物/索引
  • 事物/创造
  • 事物/报告/索引
  • 事物/报告/某物报告
因此,在默认的“区域”(即无区域)中,我添加了一个“东西”控制器。 在我的'Thing'控制器中,我有'Index'和'Create'动作

然后我添加了一个“东西”区域。我在这个区域添加了一个“Reports”控制器,在这个控制器中我添加了“Index”和“SomeReport”操作

在我的全球范围内-我打电话:

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”}
确定。这有点糟糕:(在这种情况下,我可以在每一个动作上都有一个属性路由。或者只是更改
区域的名称,这样它就不同于控制器:)