Проблема с пользовательской проверкой на стороне клиента для PropertyValidatorC#

Место общения программистов C#
Anonymous
Проблема с пользовательской проверкой на стороне клиента для PropertyValidator

Сообщение Anonymous »

FluentValidation 10.3.3, .NET 5
У меня есть собственный валидатор со следующей сигнатурой:

Код: Выделить всё

public class FileSizeValidator : PropertyValidator
и я попытался реализовать его клиентскую часть, чтобы она имела четность с проверками на основе атрибутов, где клиентская часть уже работала. Существует очень мало подсказок о том, как бы я когда-либо начал это делать, но я нашел этот комментарий по проблеме, которая казалась даже не такой уж устаревшей. Определенно более новый, чем Codeplex, к которому меня привели мои поиски.
Поэтому я сделал простой клиентский валидатор, например:

Код: Выделить всё

public class FileSizeClientValidator : ClientValidatorBase
{
public FileSizeClientValidator(IValidationRule rule, IRuleComponent component) : base(rule, component)
{ }

public override void AddValidation(ClientModelValidationContext context)
{
MergeAttribute(context.Attributes, "test-attribute", "test message");
}
}
и зарегистрировал его в

Код: Выделить всё

services
.AddFluentValidation(options =>
{
options.ConfigureClientsideValidation(clientside =>
{
clientside.ClientValidatorFactories[typeof(FileSizeValidator)] = (_, rule, component) =>
new FileSizeClientValidator(rule, component);
});
});
что, похоже, в основном соответствует тому, что содержалось в комментарии, указанном выше. Не могу точно получить общий параметр для моего валидатора, чтобы его привести, потому что, похоже, его неоткуда взять, и с тех пор некоторые сигнатуры изменились, поэтому я решил провести более простой тест. Просто жестко запрограммированный атрибут и сообщение.
Увы, в форме ничего не отображается. Хуже того, ни конструктор, ни метод AddValidation не срабатывают ни в какой момент, а точки останова, размещенные там, никогда не срабатывают.

Подробнее здесь: https://stackoverflow.com/questions/690 ... yvalidator

Вернуться в «C#»