Asp.net mvc 3 MVC3/结构图2.6.2 DI自定义控制器工厂问题

Asp.net mvc 3 MVC3/结构图2.6.2 DI自定义控制器工厂问题,asp.net-mvc-3,dependency-injection,inversion-of-control,structuremap,controller-factory,Asp.net Mvc 3,Dependency Injection,Inversion Of Control,Structuremap,Controller Factory,我在将非无参数类作为模型传递给控制器中的视图时遇到问题 我最近从结构图2.5.3转到了2.6.2。在2.5.3中一切都很好,但在2.6.2中不再有效。这是我的自定义控制器工厂: public class StructureMapControllerFactory : DefaultControllerFactory { protected override IController GetControllerInstance(RequestContext requestContext, T

我在将非无参数类作为模型传递给控制器中的视图时遇到问题

我最近从结构图2.5.3转到了2.6.2。在2.5.3中一切都很好,但在2.6.2中不再有效。这是我的自定义控制器工厂:

public class StructureMapControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        try
        {
            return ObjectFactory.GetInstance(controllerType) as Controller;
        }
        catch (StructureMapException)
        {
            Debug.WriteLine(ObjectFactory.WhatDoIHave());
            throw;
        }
    }
}
并对其进行布线:

ControllerBuilder.Current.SetControllerFactory(typeof(StructureMapControllerFactory));
我的自定义模型绑定器引发异常:


有什么问题吗?

我认为这与您的DI容器无关。当instance为null时,将调用modelbinder,它可能会尝试创建
modelType
的新实例,这是不可能的,因为它没有无参数构造函数


我想您刚刚在
模型类型的构造函数中添加了一个构造函数参数

是的,我已经添加了,这就是我试图解决的问题。我的模型类型没有无参数构造函数,这就是Structure Map自定义控制器工厂应该注意的,因为我在该类的构造函数中使用依赖项注入?但您不是通过structuremap构造模型类型(或者至少不是modelbinder中使用的模型类型)。