我发现了这个问题的几个问题,但还没有找到一个干净和简单的解决方案。Autofac属性注入与MVC ValidationAttribute
这是我在做什么(使用Autofac 3.3.0)登记
builder.RegisterType<MerchantRepo>().As<IMerchantRepo>().PropertiesAutowired();
这是我的验证类
public class MerchantMustBeUniqueAttribute : ValidationAttribute
{
public IMerchantRepo MerchantRepo { get; set; }
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
int merchantId = Convert.ToInt32(value);
if (MerchantRepo.Exists(merchantId))
{
return new ValidationResult(ErrorMessage);
}
else
{
return ValidationResult.Success;
}
}
}
我的商家回购总是空。
编辑:
这是我的视图模型
public class MerchantCreationModel
{
[Required]
[MerchantMustBeUnique(ErrorMessage = "Already exists!")]
public int? NewMerchantId { get; set; }
}
Autofac注册
public static void RegisterDependencies()
{
var builder = new ContainerBuilder();
builder.RegisterFilterProvider(); // Inject properties into filter attributes
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterType<MerchantRepo>().As<IMerchantRepo>().PropertiesAutowired();
IContainer container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
你能告诉你如何应用验证属性,并显示其他注册,在那里你注册Autofac过滤器提供什么样的? – 2014-09-24 16:06:51
@TravisIllig这是一个'ValidationAttribute';除非在彻底搜索之后我失去了一些大的东西,Autofac没有做任何具体的提供这些....我是吗? – 2016-02-04 18:10:18
是的,你是正确的,它只适用于行动过滤器 – ThunderDev 2016-02-04 18:19:27