Как зарегистрировать правила проверки клиента при запуске?

Пока у меня есть это:

public class DateInputValidator : IClientModelValidator
{
    public void AddValidation(ClientModelValidationContext context)
    {
        context.Attributes["data-val"] = "true";
        context.Attributes["data-val-custom"] = "Error message";
        this.GetErrorMessage(context);
    }

    private string GetErrorMessage(ClientModelValidationContext context)
    {
        return $"{context.ModelMetadata.GetDisplayName()} is not a valid youtube url";
    }
}

public class DateInputValidatorProvider : IClientModelValidatorProvider
{
    public void CreateValidators(ClientValidatorProviderContext context)
    {
        if (context.ModelMetadata.ModelType == typeof(string) &&
            context.ModelMetadata.DataTypeName == "DateInputType" &&
            !context.Results.Any(m => m.Validator is DateInputValidator))
        {
            context.Results.Add(new ClientValidatorItem
            {
                Validator = new DateInputValidator(),
                IsReusable = true
            });
        }
    }
}

и я пытаюсь зарегистрироваться через пример, который я нашел в Интернете:

В startUp.cs

public void ConfigureServices(IServiceCollection services)
{
    services.Configure(o =>
    o.ClientModelValidatorProviders.Add(new DateInputValidatorProvider()));
}

но получите ошибку:

"IServiceCollection" не содержит определения для "Configure", а лучшая перегрузка метода расширения "WebHostBuilderExtensions.Configure(IWebHostBuilder, Action)" требует приемник типа "IWebHostBuilder"

1 ответ

Решение

Опции, которые вам нужно настроить, это MvcViewOptions, доступные внутри services.AddMvc().AddViewOptions(o => o.ClientModelValidatorProviders.Add(new DateInputValidatorProvider()));

Другие вопросы по тегам