2

依存性注入に Ninject を使用するサイトがあり、次のように Bootstrapper クラス内で Routing を定義しています。

    public void RegisterRoutes()
    {
        Routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        Routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });

        Routes.MapRoute(
            null,
            "{pageTitle}",
            new { controller = "Home", action = "Page", pageTitle = "Index" }
        );

        Routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

プロジェクトにエリアを追加しましたが、デフォルトの AdminAreaRegistration がルートを登録していません

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Admin_default",
            "Admin/{controller}/{action}/{id}",
            new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
    }

エリアを Ninject に登録する場所または方法を教えてください。

4

3 に答える 3

3

ソースコードに付属するサンプルプロジェクトにエリアができました。それを見てください。https://github.com/ninject/ninject.web.mvc/zipball/master

于 2010-12-03T16:45:34.567 に答える
2

この問題は解決しましたか?

NinjectControllerFactory が、領域で定義されたコントローラーを参照する URL を解決しないという問題があります。次のメッセージが表示されます。

IControllerFactory 'myWebSite.WebUI.Infrastructure.NinjectControllerFactory' は、'admin' という名前のコントローラーを返しませんでした。

コントローラーをルートの Controllers フォルダーに移動すると、URL が解決されます。

于 2010-11-22T08:46:52.963 に答える
2

RegisterAllAreas() を呼び出していますか?

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    RegisterRoutes(RouteTable.Routes);
}

RegisterRoutes() のに呼び出す必要があることに注意してください。

于 2010-10-14T13:52:11.280 に答える