带有ModelStateWrappper的Controller ModelState

时间:2009-04-16 08:07:22

标签: asp.net-mvc dependency-injection

对所有人来说,我使用Structure Map来实现依赖注入。我创建了ModelStateWrapper类来在服务层中发送Model状态,在构造函数中获取对控制器ModelState的引用。在bootswrapper中,我注册了我的类型:

ForRequestedType<ISourceService>()
            .TheDefaultIsConcreteType<SourceService>();
ForRequestedType<IValidationDictionary>()
        .TheDefaultIsConcreteType<ModelStateWrapper>();

我如何在这里向ModelStateWrapper提供控制器模型状态的参考?

P.S。抱歉我的英文:)

1 个答案:

答案 0 :(得分:2)

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

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>();
      ...
   }
   ...
}

有关详细信息,请参阅此文档:

Passing Arguments to StructureMap at Runtime