【问题标题】:Asp.Net MVC Custom Validation Attribute With StructureMap带有 StructureMap 的 Asp.Net MVC 自定义验证属性
【发布时间】:2015-08-09 03:10:19
【问题描述】:

我在 asp.net mvc 中有一个自定义属性并使用结构映射。 如何将 ContextDB 注入自定义 ValidationAttribute?

[AttributeUsage(AttributeTargets.Property)]
public class CustomValidationAttribute : ValidationAttribute
{
    public ContextDB _Context { get; set; }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        Settings settings = new Settings(_Context);

        // Checking...

        return ValidationResult.Success;
    }
}

我的代码不起作用,_Context 为空。 我该怎么办?

谢谢。

【问题讨论】:

    标签: asp.net asp.net-mvc structuremap


    【解决方案1】:

    如果您已将 DI 注册到 MVC,则可以在任何地方使用 MVC 的依赖解析器。

    public class CustomValidationAttribute : ValidationAttribute
    {
         private ContextDB _context { get; set; }
    
         public CustomValidationAttribute()
         {
             // assuming you have a IContextDB interface which mapped to 
             // ContextDB in your StructureMap
              _context =DependencyResolver.Current.GetService<IContextDB>();
         }
         // rest of your code
    }
    

    对于更高级的场景,还请查看 Setter Injection 概念。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-04
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 2013-11-12
      • 1970-01-01
      相关资源
      最近更新 更多