我有一个报告控制器(ReportsController),我决定拆分,因为它包含太多的操作。我目前有三个控制器服务的页面:
应用程序/报告/设置/
应用程序/报告/图表/
应用程序/报告/表/
我决定仅将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()
)
);
这种方法效果很好,但我想知道是否有更好的方法?这种方法的缺点是,如果我想拆分其他控制器,我需要不断添加特定于每个控制器的路由配置的条目,这可能会将我的路由配置扩大到难以维护的程度。
我认为我想要做的事情(拆分控制器)是一个常见的要求,但我没有遇到通过谷歌实现它的标准方法。
答案 0 :(得分:1)
这个问题正是我们发布基于属性的路由的原因。每个操作的一个路径,以简洁明了的方式,以及控制器之间的移动操作是无缝的,尤其是如果您使用控制器级别属性[RouteArea]和[RoutePrefix]。你越早切换,你就越幸福。我们从未回头。