Thu*_*Dev 5 c# asp.net-mvc inversion-of-control autofac data-annotations
我发现了关于这个主题的几个问题,但还没有找到一个干净简单的解决方案。
这就是我正在做的(使用 Autofac 3.3.0)注册
builder.RegisterType<MerchantRepo>().As<IMerchantRepo>().PropertiesAutowired();
Run Code Online (Sandbox Code Playgroud)
这是我的验证类
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的商家回购始终为空。
编辑:
这是我的视图模型的一部分
public class MerchantCreationModel
{
[Required]
[MerchantMustBeUnique(ErrorMessage = "Already exists!")]
public int? NewMerchantId { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
自动注册
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));
}
Run Code Online (Sandbox Code Playgroud)
我使用DependencyResolverASP.NET MVC 中的类解决了我的问题。
IMerchantRepo repo = DependencyResolver.Current.GetService<IMerchantRepo>();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1353 次 |
| 最近记录: |