MVC3 / Structure Map 2.6.2 DI自定义控制器工厂问题

时间:2011-08-16 14:30:36

标签: asp.net-mvc-3 dependency-injection inversion-of-control structuremap controller-factory

我将非参数类作为模型传递给控制器​​中的视图时出现问题。

我最近从Structure Map 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));

我的自定义模型绑定器抛出异常:http://screencast.com/t/xZDNAAmM

可能有什么问题?

1 个答案:

答案 0 :(得分:0)

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

我认为您刚刚将构造函数参数添加到modelType

的构造函数中