Asp.net mvc 带有ModelStateWrappper的控制器ModelState

Asp.net mvc 带有ModelStateWrappper的控制器ModelState,asp.net-mvc,dependency-injection,Asp.net Mvc,Dependency Injection,大家好,我正在使用结构映射来实现依赖注入。我创建了ModelStateWrapper类来发送服务层中的模型状态,它在构造函数中获取对控制器的ModelState的引用。在Bootswraper中,我注册了我的类型: ForRequestedType<ISourceService>() .TheDefaultIsConcreteType<SourceService>(); ForRequestedType<IValidationDictiona

大家好,我正在使用结构映射来实现依赖注入。我创建了ModelStateWrapper类来发送服务层中的模型状态,它在构造函数中获取对控制器的ModelState的引用。在Bootswraper中,我注册了我的类型:

ForRequestedType<ISourceService>()
            .TheDefaultIsConcreteType<SourceService>();
ForRequestedType<IValidationDictionary>()
        .TheDefaultIsConcreteType<ModelStateWrapper>();
ForRequestedType()
。默认的混凝土类型();
ForRequestedType()
。默认的混凝土类型();
我如何在这里将控制器的模型状态引用给ModelStateWrapper


p、 对不起,我的英语:)

您需要提供更多信息,但这是我对您的最佳猜测:

public class ModelStateWrapper : IValidationDictionary
{
    ...
     private readonly ModelState _modelState;
     public ModelStateWrapper(ModelState modelState)
     {
          _modelState = modelState;
     }
    ...
}
如果要将变量(在本例中为控制器的模型状态)传递给ModelStateWrapper,几乎肯定需要通过调用ObjectFactory显式地进行传递

例如:

MyController : Controller 
{
   ...
   public MyAction()
   {
      ...
      IValidationDictionary validationDictionary = ObjectFactory
          .With<ModelState>(this.ModelState)
          .GetInstance<IValidationDictionary>();
      ...
   }
   ...
}
MyController:Controller
{
...
公共行动()
{
...
IValidationDictionary validationDictionary=ObjectFactory
.With(this.ModelState)
.GetInstance();
...
}
...
}
有关详细信息,请参阅本文档:


感谢您的回复,是的,我遇到了这种情况,我想在Bootswrapper文件中,而不是在controller中,将controller的ModelState设置为IValidationDictionary。我能做这个吗?或者我需要设置我自己的基本控制器类?