Asp.Net 带有 StructureMap 的 MVC 自定义验证属性
Asp.Net MVC Custom Validation Attribute With StructureMap
我在 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 为空。
我该怎么办?
谢谢。
如果您已将 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 注入概念。
我在 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 为空。 我该怎么办?
谢谢。
如果您已将 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 注入概念。