Мне нужна проверка поля в отношении базы данных, возможно, с использованием других зарегистрированных сервисов. Я читал documentation, но не нашел ответа.Пользовательская проверка ASP.NET Core для базы данных
Существует дистанционная проверка, вызывающая метод контроллера, но только на стороне клиента, поэтому отключение 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 был нулевым. Я действительно исчерпал все идеи здесь, и буду благодарен за любую помощь.
Вы не должны вводить зависимости в атрибуты, выраженные [здесь] (https://stackoverflow.com/a/29916075/264697), [здесь] (http://blog.ploeh.dk/2014/06/13/passive-attributes /) и [здесь] (https://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=97). – Steven