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