/// <summary>
        /// Create a new instance of <see cref="DataAnnotationsClientModelValidatorProvider"/>.
        /// </summary>
        /// <param name="options">The <see cref="IOptions{MvcDataAnnotationsLocalizationOptions}"/>.</param>
        /// <param name="stringLocalizerFactory">The <see cref="IStringLocalizerFactory"/>.</param>
        public DataAnnotationsClientModelValidatorProvider(
            IValidationAttributeAdapterProvider validationAttributeAdapterProvider,
            IOptions<MvcDataAnnotationsLocalizationOptions> options,
            IStringLocalizerFactory stringLocalizerFactory)
        {
            if (validationAttributeAdapterProvider == null)
            {
                throw new ArgumentNullException(nameof(validationAttributeAdapterProvider));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
            _options = options;
            _stringLocalizerFactory = stringLocalizerFactory;
        }
コード例 #2
0
        /// <summary>
        ///  Create a new instance of <see cref="DataAnnotationsModelValidator"/>.
        /// </summary>
        /// <param name="attribute">The <see cref="ValidationAttribute"/> that defines what we're validating.</param>
        /// <param name="stringLocalizer">The <see cref="IStringLocalizer"/> used to create messages.</param>
        /// <param name="validationAttributeAdapterProvider">The <see cref="IValidationAttributeAdapterProvider"/>
        /// which <see cref="ValidationAttributeAdapter{TAttribute}"/>'s will be created from.</param>
        public DataAnnotationsModelValidator(
            IValidationAttributeAdapterProvider validationAttributeAdapterProvider,
            ValidationAttribute attribute,
            IStringLocalizer stringLocalizer)
        {
            if (validationAttributeAdapterProvider == null)
            {
                throw new ArgumentNullException(nameof(validationAttributeAdapterProvider));
            }

            if (attribute == null)
            {
                throw new ArgumentNullException(nameof(attribute));
            }

            _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
            Attribute = attribute;
            _stringLocalizer = stringLocalizer;
        }
        public CustomDataAnnotationsClientModelValidatorProvider()
        {
            IServiceProvider serviceProvider = ContainerManager.ServiceProvider;
            IValidationAttributeAdapterProvider validationAttributeAdapterProvider = serviceProvider.GetService(typeof(IValidationAttributeAdapterProvider)) as IValidationAttributeAdapterProvider;
            IOptions <MvcDataAnnotationsLocalizationOptions> options = serviceProvider.GetService(typeof(IOptions <MvcDataAnnotationsLocalizationOptions>)) as IOptions <MvcDataAnnotationsLocalizationOptions>;
            IStringLocalizerFactory stringLocalizerFactory           = serviceProvider.GetService(typeof(IStringLocalizerFactory)) as IStringLocalizerFactory;

            if (validationAttributeAdapterProvider == null)
            {
                throw new ArgumentNullException(nameof(validationAttributeAdapterProvider));
            }
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
            _options = options;
            _stringLocalizerFactory = stringLocalizerFactory;
        }
 public LocalizedClientModelValidator(IValidationAttributeAdapterProvider validationAttributeAdapterProvider)
 {
     _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
 }
 public ExpressiveAnnotationsAttributeAdapterProvider()
 {
     _baseProvider = new ValidationAttributeAdapterProvider();
 }
 public VeeValidateAttributeAdapterProviderTests()
 {
     _provider = new VeeValidateAttributeAdapterProvider(new VeeValidateOptions());
 }
コード例 #7
0
 public CustomValidatableObjectAdapter(IValidationAttributeAdapterProvider validationAttributeAdapterProvider, StringLocalizerAdapter stringLocalizerAdapter)
 {
     _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
     _stringLocalizerAdapter             = stringLocalizerAdapter;
 }
コード例 #8
0
 public ConfigureMvcViews(IValidationAttributeAdapterProvider validationAttributeAdapterProvider)
 {
     _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
 }
コード例 #9
0
 public DetachedModelValidatorConfigureOptions(IResourceMapper resourceMapper, IStringLocalizerFactory stringLocalizerFactory, IValidationAttributeAdapterProvider validationAttributeAdapterProvider)
 {
     _stringLocalizerFactory             = stringLocalizerFactory;
     _resourceMapper                     = resourceMapper;
     _validationAttributeAdapterProvider = validationAttributeAdapterProvider;
 }
コード例 #10
0
        private static void AddValidationsForViewModel(EnterYourDetailsBodyViewModel viewModel, ModelExplorer modelExplorer, IValidationAttributeAdapterProvider validationAttributeAdapterProvider, ClientModelValidationContext context)
        {
            var properties = new Dictionary <string, string>()
            {
                { nameof(EnterYourDetailsBodyViewModel.EmailAddress), nameof(EnterYourDetailsBodyViewModel.EmailAddressIsRequired) },
                { nameof(EnterYourDetailsBodyViewModel.TelephoneNumber), nameof(EnterYourDetailsBodyViewModel.TelephoneNumberIsRequired) },
                { nameof(EnterYourDetailsBodyViewModel.CallbackDateOptionSelected), nameof(EnterYourDetailsBodyViewModel.IsCallback) },
                { nameof(EnterYourDetailsBodyViewModel.CallbackTimeOptionSelected), nameof(EnterYourDetailsBodyViewModel.IsCallback) },
            };
            var errorMessages = new Dictionary <string, string>()
            {
                { nameof(EnterYourDetailsBodyViewModel.EmailAddress), "Enter your email address" },
                { nameof(EnterYourDetailsBodyViewModel.TelephoneNumber), "Enter your telephone number" },
                { nameof(EnterYourDetailsBodyViewModel.CallbackDateOptionSelected), EnterYourDetailsBodyViewModel.CallbackDateOptionValidationError },
                { nameof(EnterYourDetailsBodyViewModel.CallbackTimeOptionSelected), EnterYourDetailsBodyViewModel.CallbackTimeOptionValidationError },
            };

            if (properties.Keys.Contains(modelExplorer.Metadata.PropertyName))
            {
                var propertyInfo = viewModel.GetType().GetProperty(properties[modelExplorer.Metadata.PropertyName]);

                if (propertyInfo != null)
                {
                    var isRequiredValue = (bool?)propertyInfo.GetValue(viewModel, null);

                    if (isRequiredValue != null && isRequiredValue.Value)
                    {
                        var validationAdapter = (RequiredAttributeAdapter)validationAttributeAdapterProvider.GetAttributeAdapter(new RequiredAttribute(), null);
                        var errorMessage      = errorMessages[modelExplorer.Metadata.PropertyName];
                        validationAdapter.Attribute.ErrorMessage = errorMessage;
                        validationAdapter.AddValidation(context);
                    }
                }
            }
        }