Asp.Net MVC Ninject и области

У меня есть сайт, который использует Ninject для внедрения зависимостей, и у меня есть маршрутизация, определенная в классе Bootstrapper, например:

    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?


person Nicholas Murray    schedule 14.10.2010    source источник


Ответы (3)


Образец проекта, поставляемый с исходным кодом, теперь имеет область. Взгляните на это. https://github.com/ninject/ninject.web.mvc/zipball/master

person Remo Gloor    schedule 03.12.2010
comment
Ура, я уже думал над проблемой, это так же просто, как просто добавить область в проект! - person Nicholas Murray; 08.12.2010
comment
Спасибо. Я загрузил исходный проект, и сопоставление его с моим действительно очень помогло! ( : - person J0NNY ZER0; 07.06.2012

вы вызываете RegisterAllAreas()?

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

обратите внимание, что его нужно вызывать до RegisterRoutes().

person Dave Thieben    schedule 14.10.2010
comment
Спасибо за ваш ответ. У меня уже есть это в: protected override void OnApplicationStarted() { AreaRegistration.RegisterAllAreas(); RegisterAllControllersIn(Assembly.GetExecutingAssembly()); var bootstrapper = Kernel.Get‹Bootstrapper›(); загрузчик.RegisterRoutes(); } - person Nicholas Murray; 18.10.2010

Вы решили эту проблему?

У меня проблема, когда мой NinjectControllerFactory не разрешает URL-адреса, которые ссылаются на контроллеры, определенные в областях. Я получаю следующее сообщение:

IControllerFactory «myWebSite.WebUI.Infrastructure.NinjectControllerFactory» не вернул контроллер для имени «admin».

Если я перемещу контроллер в корневую папку Controllers, он разрешит URL-адрес.

person xiecs    schedule 22.11.2010
comment
@ user515290 - Привет, я посмотрю на это - person Nicholas Murray; 22.11.2010