3

public partial class AdminControllerこの部分クラスを実装する 15 の他のクラスがあります。これは、プロジェクトがパス経由でアクセスできる多くのルートを持つことができるようにするためだと思います"/admin/{methodname}"

プライマリ部分クラスは、15 個のクラスすべてのコンストラクターを処理するため、13 個のコンストラクターの依存関係があります。

これはあまりきれいだとは思いませんが、各クラスが必要な依存関係を持つことができるようにこれを整理する方法がわかりませんが、すべてのルートは"/admin/{methodname}"

4

2 に答える 2

2

MVC Areaに変換/adminし、異なるコントローラがその領域内の異なるパスを処理することを検討してください。

于 2013-04-04T16:08:32.993 に答える
0

ロジックを小さなコントローラーにリファクタリングして、依存関係が多すぎる問題を整理し、独自のルート マッピングを使用してルーティングの問題を処理します。

タプルを含む RouteDefinition クラスを使用できます (前にハッシュと言いましたが、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);
于 2013-04-04T16:35:31.280 に答える