我在用:-
我不断收到“没有为此对象定义的无参数构造函数”。对于我的 AccountController。 AccountController 注入(inject)了服务。这些服务的绑定(bind)在 ServiceModule 中定义。
在 Global.asax.cs 中找到我的 MvcApplication 的代码。
public class MvcApplication : NinjectHttpApplication // System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Account", action = "Login", id = "" } // Parameter defaults
);
}
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
RegisterRoutes(RouteTable.Routes);
RegisterAllControllersIn(Assembly.GetExecutingAssembly());
}
protected override IKernel CreateKernel()
{
return new StandardKernel(new INinjectModule[] {
new ServiceModule(),
});
}
}
最佳答案
针对 ASP.Net MVC 2 dll 重建 Ninject.Web.Mvc 解决了该问题。问题在于 NinjectControllerFactory 类。获取 Controller 实例的方法的签名在 MVC 2 中已更改。
IController GetControllerInstance(Type controllerType)
到
IController GetControllerInstance(
RequestContext requestContext, Type controllerType)
进行必要的更改并重建 Ninject MVC 扩展,一切正常。感谢@Charlino 的建议。
关于asp.net-mvc - 我如何让 ninject 2.0 与 asp.net mvc 2 一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2247533/