我已经转移到一个具有public partial class AdminController
的项目,还有15个其他类来实现这个分部类。我认为这样做是为了让项目可以通过"/admin/{methodname}"
路径访问许多路径。
主要的部分类处理所有15个类的构造函数,因此有13个构造函数依赖项。
我认为这不是很漂亮,但我不确定如何整理它,所以每个类都可以拥有它所需的依赖关系,但保持所有路由都转到"/admin/{methodname}"
答案 0 :(得分:2)
考虑将/admin
转换为MVC Area,让不同的控制器处理该区域内的不同路径。
答案 1 :(得分:0)
我想说,将逻辑重构为较小的控制器,从而整理出太多的依赖问题,并通过使用自己的路由映射来处理路由问题。
你可以有一个RouteDefinition类,它包含一个元组(之前我说Hash,但我认为你需要超过2个参数)
public static class RouteDefinitions
{
const List<Tuple<string,string,string> AdminRoutes = new List<Tuple<string,string,string>> {
Tuple.Create("fooroute", //route
"foocontroller", //corresponding controller
"fooaction"), //corresponding action
Tuple.Create("barroute", "barcontroller","baraction")
};
public static void AddRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
foreach(var adminRoute in AdminRoutes)
routes.MapRoute(adminRoute.Item1, string.Format("Admin/{0}", adminRoute.Item1) , new { controller = adminRoute.Item2, action = adminRoute.Item3 });
}
}
然后在Application_Start()
中将其称为
RouteDefinitions.AddRoutes(RouteTable.Routes);