【发布时间】:2017-02-18 02:56:13
【问题描述】:
我需要针对可能使用其他注册服务的数据库验证字段。我一直在阅读documentation,但还没有找到真正的答案。
有调用控制器方法的远程验证,但它只是客户端,所以禁用 JS 会禁用验证。还有使用验证属性的自定义验证,并且很好地包含在ModelState.IsValid 中,但我无法将依赖项注入它的构造函数。
我发现 this question 标记为已回答,因为它涉及依赖解析器,但我找不到任何有用的信息。
我尝试研究它,但我遇到的只是依赖注入或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 都是空的。我真的用尽了这里的所有想法,如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: c# validation dependency-injection asp.net-core dependency-resolver