public void CreateValidators(ClientValidatorProviderContext context)
        {
            for (var i = 0; i < context.Results.Count; i++)
            {
                var validatorItem = context.Results[i];
                if (validatorItem.Validator != null)
                {
                    continue;
                }

                var attribute = validatorItem.ValidatorMetadata as ValidationAttribute;
                if (attribute == null)
                {
                    continue;
                }

                var validationAdapterProvider = new ValidationAttributeAdapterProvider();

                validatorItem.Validator = validationAdapterProvider.GetAttributeAdapter(attribute, stringLocalizer: null);

                if (attribute is RequiredAttribute)
                {
                    validatorItem.IsReusable = true;
                }
            }
        }
Example #2
0
        public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer)
        {
            IValidationAttributeAdapterProvider _baseProvider = new ValidationAttributeAdapterProvider();

            if (attribute is MoedaAttribute moedaAttribute)
            {
                return(new MoedaAttributeAdapter(moedaAttribute, stringLocalizer));
            }

            return(_baseProvider.GetAttributeAdapter(attribute, stringLocalizer));
        }
        /// <summary>
        /// Creates an <see cref="IAttributeAdapter" /> for the given attribute.
        /// </summary>
        /// <param name="attribute">The attribute to create an adapter for.</param>
        /// <param name="stringLocalizer">The localizer to provide to the adapter.</param>
        /// <returns>An <see cref="IAttributeAdapter" /> for the given attribute.</returns>
        public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer)
        {
            Requires.NotNull(attribute, nameof(attribute));

            AdapterFactory factory;

            if (factories.TryGetValue(attribute.GetType(), out factory))
            {
                return(factory(attribute, stringLocalizer));
            }

            var inner = new ValidationAttributeAdapterProvider();

            return(inner.GetAttributeAdapter(attribute, stringLocalizer));
        }
Example #4
0
        private static IDictionary <string, object> GetUnobtrusiveValidationAttributes(PropertyInfo propertyInfo, ModelMetadata modelMetadata, IModelMetadataProvider provider)
        {
            var hasRequiredAttribute = false;
            var propType             = GetPropertyType(propertyInfo);
            var attrs = new AttributeDictionary();

            var valAttrs = propertyInfo.GetCustomAttributes(typeof(ValidationAttribute));

            ValidationAttributeAdapterProvider adapterProvider = new ValidationAttributeAdapterProvider();
            IAttributeAdapter adapter;

            var context = new ClientModelValidationContext(
                new ActionContext(),
                modelMetadata,
                provider,
                attrs);

            foreach (ValidationAttribute valAttr in valAttrs)
            {
                if (valAttr is RequiredAttribute)
                {
                    hasRequiredAttribute = true;
                }

                adapter = adapterProvider.GetAttributeAdapter(valAttr, null);
                adapter.AddValidation(context);
            }

            if (!hasRequiredAttribute && context.ModelMetadata.IsRequired)
            {
                adapter = adapterProvider.GetAttributeAdapter(new RequiredAttribute(), null);
                adapter.AddValidation(context);
            }

            if (propType == typeof(float) ||
                propType == typeof(double) ||
                propType == typeof(decimal))
            {
                MergeAttribute(context.Attributes, "data-val", "true");
                MergeAttribute(context.Attributes, "data-val-number", GetErrorMessage(context.ModelMetadata));
            }

            return(attrs.ToDictionary(p => p.Key, pp => (object)pp.Value));
        }
Example #5
0
        public TestMvcOptions()
        {
            Value = new MvcOptions();
            var optionsSetup = new MvcCoreMvcOptionsSetup(new TestHttpRequestStreamReaderFactory());

            optionsSetup.Configure(Value);

            var validationAttributeAdapterProvider = new ValidationAttributeAdapterProvider();
            var dataAnnotationLocalizationOptions  = Options.Create(new MvcDataAnnotationsLocalizationOptions());
            var stringLocalizer        = new Mock <IStringLocalizer>();
            var stringLocalizerFactory = new Mock <IStringLocalizerFactory>();

            stringLocalizerFactory
            .Setup(s => s.Create(It.IsAny <Type>()))
            .Returns(stringLocalizer.Object);

            var dataAnnotationOptionsSetup = new MvcDataAnnotationsMvcOptionsSetup(
                validationAttributeAdapterProvider,
                dataAnnotationLocalizationOptions,
                stringLocalizerFactory.Object);

            dataAnnotationOptionsSetup.Configure(Value);

            var loggerFactory      = new LoggerFactory();
            var jsonOptions        = Options.Create(new MvcNewtonsoftJsonOptions());
            var charPool           = ArrayPool <char> .Shared;
            var objectPoolProvider = new DefaultObjectPoolProvider();

            var mvcJsonMvcOptionsSetup = new NewtonsoftJsonMvcOptionsSetup(
                loggerFactory,
                jsonOptions,
                charPool,
                objectPoolProvider);

            mvcJsonMvcOptionsSetup.Configure(Value);
        }
Example #6
0
 public PlusValidationAttributeAdapterProvider(ValidationAttributeAdapterProvider defaultAdapter)
 {
     _defaultAdapter = defaultAdapter;
 }
Example #7
0
 public CpfValidationAttributeAdapterProvider()
 {
     _baseProvider = new ValidationAttributeAdapterProvider();
 }
 public InheritanceValidationAttributeAdapterProvider()
 {
     defaultClientModelValidatorProvider = new ValidationAttributeAdapterProvider();
 }
Example #9
0
            public void CreateValidators(ClientValidatorProviderContext context)
            {
                for (var i = 0; i < context.Results.Count; i++)
                {
                    var validatorItem = context.Results[i];
                    if (validatorItem.Validator != null)
                    {
                        continue;
                    }

                    var attribute = validatorItem.ValidatorMetadata as ValidationAttribute;
                    if (attribute == null)
                    {
                        continue;
                    }

                    var validationAdapterProvider = new ValidationAttributeAdapterProvider();

                    validatorItem.Validator = validationAdapterProvider.GetAttributeAdapter(attribute, stringLocalizer: null);

                    if (attribute is RequiredAttribute)
                    {
                        validatorItem.IsReusable = true;
                    }
                }
            }