2

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

4

3 回答 3

3

带有源代码的示例项目现在有了一个区域。看看它。https://github.com/ninject/ninject.web.mvc/zipball/master

于 2010-12-03T16:45:34.567 回答
2

你打电话给RegisterAllAreas()吗?

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

注意它必须在RegisterRoutes()之前调用。

于 2010-10-14T13:52:11.280 回答
2

你解决了这个问题吗?

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

IControllerFactory 'myWebSite.WebUI.Infrastructure.NinjectControllerFactory' 没有返回名称为 'admin' 的控制器。

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

于 2010-11-22T08:46:52.963 回答