Controller Factory是用来创建控制器。而Controller最常用的场景之一是支持依赖注入。但是如果直接在控制器中使用依赖注入,默认情况下asp.net mvc框架将不会为你创建Controller,而且你还会得到下面这个错误,如下图:
下面是我的两个代码请帮忙看看是哪出问题了
我看了陈钊前辈的帖子
http://www.cnblogs.com/chenzhao/articles/2081813.html
可是按照他说的改了没好用啊!!
没看到依赖注入 创建 控制器,你重写的创建控制器的工厂照样是 一样的那个base......... 没有问题?应该要加上解析的对象吧,如:
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? base.GetControllerInstance(requestContext, controllerType)
: IoC.Resolve<IController>(controllerType);
}
再把你的 各个具体的控制器注册到ioc容器中。
两个问题不明白 IoC.Resolve<IController>(controllerType); 这个IOC容器从哪来的?
如何注册ioc容器,谢谢!
@RockBoy:
1.只是假设, 依赖注入容器,你没有,那你怎么 依赖注入?
2.只是想说 重写的工厂里,应该要有你自己创建控制器的方法。不能 你的有参数的构造函数的控制器 怎么new,怎么构造,什么时候构造。
@Qlin: protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{
return controllerType == null
? base.GetControllerInstance(requestContext, controllerType)
: (IController)ninjectKernel.Get(controllerType);
}
这个不就是我自定义的一个控制器吗?不要意思 不明白你的意思那我这个应该怎么改呢?
@RockBoy:
上面不是 没你这样写不? 写了还问我为啥要这样?
如果写了,就看你的 有没有注册了相应的控制器了,应该是 构造函数注入吧。