Asp.Net MVC Ninject和Areas

时间:2010-10-14 09:12:30

标签: asp.net-mvc routing ninject asp.net-mvc-areas

我有一个使用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注册区域?

3 个答案:

答案 0 :(得分:3)

与源代码一起提交的示例项目现在有一个区域。看看吧。 https://github.com/ninject/ninject.web.mvc/zipball/master

答案 1 :(得分:2)

你正在调用RegisterAllAreas()吗?

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

请注意,必须在 RegisterRoutes()之前调用

答案 2 :(得分:2)

您解决了这个问题吗?

我遇到的问题是我的NinjectControllerFactory没有解析引用区域中定义的控制器的URL。我收到以下消息:

  

IControllerFactory'myWebSite.WebUI.Infrastructure.NinjectControllerFactory'未返回名称为“admin”的控制器。

如果我将控制器移动到根Controllers文件夹,它将解析该URL。