我需要针对可能使用其他注册服务的数据库验证字段。我一直在阅读文档,但没有找到实际答案。
有调用控制器方法的远程验证,但它只是客户端,因此禁用 JS 会禁用验证。还有使用验证属性的自定义验证,并且很好地包含在其中,ModelState.IsValid
但我无法将依赖项注入它的构造函数。
我发现这个问题被标记为已回答,因为它谈到了依赖解析器,但我找不到任何有用的信息。
我尝试研究它,但我遇到的只是依赖注入或IServiceProvider
对我不起作用。以下是我的一些失败尝试:
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
//--1-------------------------------
var container = new ServiceContainer();
var _context = container.GetService<ApplicationDbContext>();
//----------------------------------
//--2-------------------------------
var services = new ServiceCollection();
IServiceProvider servicesProvider = services.BuildServiceProvider();
var _context = servicesProvider.GetService<ApplicationDbContext>();
//----------------------------------
return ValidationResult.Success;
}
每个检索到的_context都是空的。我真的在这里用尽了所有想法,我将不胜感激。