1

我在将非参数类作为模型传递给控制器​​中的视图时遇到了问题。MVC3 /结构图2.6.2 DI定制控制器工厂问题

我最近从结构图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

可能是什么问题?

回答

0

我不认为这与你的DI容器有什么关系。当实例为null时,调用您的模型绑定器并且可能会尝试创建一个modelType的新实例,这是不可能的,因为它没有无参数的构造函数。

我觉得你只是增加了一个构造函数的参数,以你的modelType

+0

是的,我做的构造函数,而这正是我试图解决的问题。我的模型类型没有无参数的构造函数,这就是结构图自定义控制器工厂应该关注的,因为我在该类的构造函数中使用了依赖注入。 –

+0

但是你不是通过结构图来构建模型类型(或者至少不是你的模型绑定器中使用的模型类型)。 – thekip