【问题标题】:Controller ModelState with ModelStateWrappper带有 ModelStateWrappper 的控制器 ModelState
【发布时间】:2009-04-16 08:07:21
【问题描述】:

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

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

如何在此处将控制器的模型状态引用给 ModelStateWrapper?

附言对不起我的英语:)

【问题讨论】:

标签: asp.net-mvc dependency-injection


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回复,是的,我有这种情况,我想在 Bootswrapper 文件中将控制器的 ModelState 设置为 IValidationDictionary,而不是在控制器中。我可以这样做吗?或者我需要设置我自己的基本控制器类?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-12
  • 2010-11-07
  • 2021-09-29
  • 1970-01-01
  • 2011-05-30
  • 2016-11-08
  • 2014-04-24
相关资源
最近更新 更多