拆分控制器并通过 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]。你越早做出改变,你就会越快乐。我们从未回头。
我有一个报表控制器 (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]。你越早做出改变,你就会越快乐。我们从未回头。