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; } } }
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)); }
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)); }
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); }
public PlusValidationAttributeAdapterProvider(ValidationAttributeAdapterProvider defaultAdapter) { _defaultAdapter = defaultAdapter; }
public CpfValidationAttributeAdapterProvider() { _baseProvider = new ValidationAttributeAdapterProvider(); }
public InheritanceValidationAttributeAdapterProvider() { defaultClientModelValidatorProvider = new ValidationAttributeAdapterProvider(); }
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; } } }