我有一个使用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注册区域?
答案 0 :(得分:3)
与源代码一起提交的示例项目现在有一个区域。看看吧。 https://github.com/ninject/ninject.web.mvc/zipball/master
答案 1 :(得分:2)
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
}
请注意,必须在 RegisterRoutes()之前调用。
答案 2 :(得分:2)
您解决了这个问题吗?
我遇到的问题是我的NinjectControllerFactory没有解析引用区域中定义的控制器的URL。我收到以下消息:
IControllerFactory'myWebSite.WebUI.Infrastructure.NinjectControllerFactory'未返回名称为“admin”的控制器。
如果我将控制器移动到根Controllers文件夹,它将解析该URL。