Я нашел несколько вопросов по этому вопросу, но не нашел простого и простого решения.Ввод свойств 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;
}
}
}
Мой торговец репо всегда пустой.
Edit:
Это часть моей точки зрения модели регистрации
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? –
@TravisIllig Это 'ValidationAttribute'; если я не пропущу что-то большое после тщательного поиска, Autofac не делает ничего конкретного, чтобы обеспечить их .... я? –
Да, вы правы, он работает только с фильтрами действий. – ThunderDev