拆分控制器并通过 2 URL 级路由到控制器

Splitting up a controller and routing to controllers via 2 URL levels

我有一个报表控制器 (ReportsController),我决定拆分它,因为它包含太多操作。我目前有控制器服务的三个页面:

app/reports/settings/

app/reports/charts/

app/reports/tables/

我决定只将 ReportsController 用于设置页面,并且我创建了两个单独的控制器来处理其他页面 - Reports__ChartsController & Reports__TablesController.

我在路由配置中添加了以下两条路由:

routes.Add(
            new Route("reports/charts/{action}/{id}",
                new RouteValueDictionary(
                    new { controller = "Reports__Charts", action = "Index", id = UrlParameter.Optional }),
                new HyphenatedRouteHandler()
            )
        );

routes.Add(
            new Route("reports/tables/{action}/{id}",
                new RouteValueDictionary(
                    new { controller = "Reports__Tables", action = "Index", id = UrlParameter.Optional }),
                new HyphenatedRouteHandler()
            )
        );

这种方法效果很好,但我想知道是否有更好的方法?这种方法的缺点是,如果我想拆分其他控制器,我将需要不断向我的路由配置中添加条目,具体到每个控制器,这可能会将我的路由配置扩大到难以维护的程度。

我认为我想做的事情(拆分控制器)是一个常见的要求,但我还没有遇到通过 google.

实现它的标准方法

这个问题正是我们一发布属性路由就扑上去的原因。每个动作一条路线,以一种清晰简洁的方式,并且在控制器之间移动动作是无缝的,特别是如果您使用控制器级别的属性 [RouteArea] 和 [RoutePrefix]。你越早做出改变,你就会越快乐。我们从未回头。