我在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为null。 我该怎么办?
感谢。
答案 0 :(得分:4)
如果您已将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概念。