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

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

2 голосов
/ 14 октября 2010

У меня есть сайт, который использует Ninject для внедрения зависимостей, и у меня есть Routing, определенный в классе 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
        );

    }

Я добавил Area в проект, но AdminAreaRegistration по умолчанию не регистрирует корень

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

Где или как мне зарегистрировать Район в Ninject?

Ответы [ 3 ]

3 голосов
/ 03 декабря 2010

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

2 голосов
/ 22 ноября 2010

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

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

IControllerFactory 'myWebSite.WebUI.Infrastructure.NinjectControllerFactory' не возвращает контроллер для имени 'admin'.

Если я переедуконтроллер в корневую папку контроллеров, он будет разрешать URL.

2 голосов
/ 14 октября 2010

вы звоните RegisterAllAreas ()?

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

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

...