public void ClientRulesWithRegexAttribute() { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForProperty( () => null, typeof(string), "Length" ); var context = new ControllerContext(); var attribute = new RegularExpressionAttribute("the_pattern"); var adapter = new RegularExpressionAttributeAdapter(metadata, context, attribute); // Act var rules = adapter.GetClientValidationRules().OrderBy(r => r.ValidationType).ToArray(); // Assert ModelClientValidationRule rule = Assert.Single(rules); Assert.Equal("regex", rule.ValidationType); Assert.Single(rule.ValidationParameters); Assert.Equal("the_pattern", rule.ValidationParameters["pattern"]); Assert.Equal( @"The field Length must match the regular expression 'the_pattern'.", rule.ErrorMessage ); }
public void AddValidation_adds_regex_rule(string pattern) { // Arrange var attribute = new RegularExpressionAttribute(pattern); var adapter = new RegularExpressionAttributeAdapter(attribute); var context = new ClientModelValidationContextBuilder() .WithModelType <string>() .Build(); // Act adapter.AddValidation(context); // Assert context.Attributes.Keys.ShouldContain("v-validate"); context.Attributes["v-validate"].ShouldBe("{regex:/[a-zA-Z]/}"); }
public void ClientRulesWithRegexAttribute() { // Arrange var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(() => null, typeof(string), "Length"); var context = new ControllerContext(); var attribute = new RegularExpressionAttribute("the_pattern"); var adapter = new RegularExpressionAttributeAdapter(metadata, context, attribute); // Act var rules = adapter.GetClientValidationRules() .OrderBy(r => r.ValidationType) .ToArray(); // Assert Assert.AreEqual(1, rules.Length); Assert.AreEqual("regularExpression", rules[0].ValidationType); Assert.AreEqual(1, rules[0].ValidationParameters.Count); Assert.AreEqual("the_pattern", rules[0].ValidationParameters["pattern"]); Assert.AreEqual(@"The field Length must match the regular expression 'the_pattern'.", rules[0].ErrorMessage); }
public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } if (_options == null) { throw new ArgumentNullException(nameof(_options)); } IAttributeAdapter adapter; if (attribute is CompareAttribute compareAttribute) { adapter = new CompareAttributeAdapter(compareAttribute); } else if (attribute is CreditCardAttribute creditCardAttribute) { adapter = new CreditCardAttributeAdapter(creditCardAttribute); } else if (attribute is EmailAddressAttribute emailAddressAttribute) { adapter = new EmailAddressAttributeAdapter(emailAddressAttribute); } else if (attribute is FileExtensionsAttribute fileExtensionsAttribute) { adapter = new FileExtensionsAttributeAdapter(fileExtensionsAttribute); } else if (attribute is MaxLengthAttribute maxLengthAttribute) { adapter = new MaxLengthAttributeAdapter(maxLengthAttribute); } else if (attribute is MinLengthAttribute minLengthAttribute) { adapter = new MinLengthAttributeAdapter(minLengthAttribute); } else if (attribute is RangeAttribute rangeAttribute) { adapter = new RangeAttributeAdapter(rangeAttribute, _options); } else if (attribute is RegularExpressionAttribute regularExpressionAttribute) { adapter = new RegularExpressionAttributeAdapter(regularExpressionAttribute); } else if (attribute is RequiredAttribute requiredAttribute) { adapter = new RequiredAttributeAdapter(requiredAttribute); } else if (attribute is StringLengthAttribute stringLengthAttribute) { adapter = new StringLengthAttributeAdapter(stringLengthAttribute); } else if (attribute is UrlAttribute urlAttribute) { adapter = new UrlAttributeAdapter(urlAttribute); } else { adapter = null; } return(adapter); }
public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } IAttributeAdapter adapter; var type = attribute.GetType(); if (attribute is RegularExpressionAttribute) { adapter = new RegularExpressionAttributeAdapter((RegularExpressionAttribute)attribute, stringLocalizer); } else if (attribute is MaxLengthAttribute) { adapter = new MaxLengthAttributeAdapter((MaxLengthAttribute)attribute, stringLocalizer); } else if (attribute is RequiredAttribute) { adapter = new RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (attribute is CompareAttribute) { adapter = new CompareAttributeAdapter((CompareAttribute)attribute, stringLocalizer); } else if (attribute is MinLengthAttribute) { adapter = new MinLengthAttributeAdapter((MinLengthAttribute)attribute, stringLocalizer); } else if (attribute is CreditCardAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-creditcard", stringLocalizer); } else if (attribute is StringLengthAttribute) { adapter = new StringLengthAttributeAdapter((StringLengthAttribute)attribute, stringLocalizer); } else if (attribute is RangeAttribute) { adapter = new RangeAttributeAdapter((RangeAttribute)attribute, stringLocalizer); } else if (attribute is EmailAddressAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-email", stringLocalizer); } else if (attribute is PhoneAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-phone", stringLocalizer); } else if (attribute is UrlAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-url", stringLocalizer); } else if (attribute is FileExtensionsAttribute) { adapter = new FileExtensionsAttributeAdapter((FileExtensionsAttribute)attribute, stringLocalizer); } else { adapter = defaultClientModelValidatorProvider.GetAttributeAdapter(attribute, stringLocalizer); } return(adapter); }
/// <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) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } IAttributeAdapter adapter; var type = attribute.GetType(); if (type == typeof(RegularExpressionAttribute)) { adapter = new RegularExpressionAttributeAdapter((RegularExpressionAttribute)attribute, stringLocalizer); } else if (type == typeof(MaxLengthAttribute)) { adapter = new MaxLengthAttributeAdapter((MaxLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RequiredAttribute)) { adapter = new RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (type == typeof(CompareAttribute)) { adapter = new CompareAttributeAdapter((CompareAttribute)attribute, stringLocalizer); } else if (type == typeof(MinLengthAttribute)) { adapter = new MinLengthAttributeAdapter((MinLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(CreditCardAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "creditcard", stringLocalizer); } else if (type == typeof(StringLengthAttribute)) { adapter = new StringLengthAttributeAdapter((StringLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RangeAttribute)) { adapter = new RangeAttributeAdapter((RangeAttribute)attribute, stringLocalizer); } else if (type == typeof(EmailAddressAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "email", stringLocalizer); } else if (type == typeof(PhoneAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "phone", stringLocalizer); } else if (type == typeof(UrlAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "url", stringLocalizer); } else { adapter = null; } return adapter; }
public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } IAttributeAdapter adapter = null; var type = attribute.GetType(); #if NETCOREAPP2_2 if (attribute is RegularExpressionAttribute) { adapter = new RegularExpressionAttributeAdapter((RegularExpressionAttribute)attribute, stringLocalizer); } else if (attribute is MaxLengthAttribute) { adapter = new MaxLengthAttributeAdapter((MaxLengthAttribute)attribute, stringLocalizer); } else if (attribute is RequiredAttribute) { adapter = new Microsoft.AspNetCore.Mvc.DataAnnotations.Internal.RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (attribute is CompareAttribute) { adapter = new CompareAttributeAdapter((CompareAttribute)attribute, stringLocalizer); } else if (attribute is MinLengthAttribute) { adapter = new MinLengthAttributeAdapter((MinLengthAttribute)attribute, stringLocalizer); } else if (attribute is CreditCardAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-creditcard", stringLocalizer); } else if (attribute is StringLengthAttribute) { adapter = new StringLengthAttributeAdapter((StringLengthAttribute)attribute, stringLocalizer); } else if (attribute is RangeAttribute) { adapter = new RangeAttributeAdapter((RangeAttribute)attribute, stringLocalizer); } else if (attribute is EmailAddressAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-email", stringLocalizer); } else if (attribute is PhoneAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-phone", stringLocalizer); } else if (attribute is UrlAttribute) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-url", stringLocalizer); } else if (attribute is FileExtensionsAttribute) { adapter = new FileExtensionsAttributeAdapter((FileExtensionsAttribute)attribute, stringLocalizer); } else { adapter = defaultClientModelValidatorProvider.GetAttributeAdapter(attribute, stringLocalizer); } #else if (attribute is RegularExpressionAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.RegularExpressionAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (RegularExpressionAttribute)attribute, stringLocalizer); } else if (attribute is MaxLengthAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.MaxLengthAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (MaxLengthAttribute)attribute, stringLocalizer); } else if (attribute is RequiredAttribute) { adapter = new RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (attribute is CompareAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.CompareAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (CompareAttribute)attribute, stringLocalizer); } else if (attribute is MinLengthAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.MinLengthAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (MinLengthAttribute)attribute, stringLocalizer); } else if (attribute is CreditCardAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.DataTypeAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (DataTypeAttribute)attribute, "data-val-creditcard", stringLocalizer); } else if (attribute is StringLengthAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.StringLengthAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (StringLengthAttribute)attribute, stringLocalizer); } else if (attribute is RangeAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.RangeAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (RangeAttribute)attribute, stringLocalizer); } else if (attribute is EmailAddressAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.DataTypeAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (DataTypeAttribute)attribute, "data-val-email", stringLocalizer); } else if (attribute is PhoneAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.DataTypeAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (DataTypeAttribute)attribute, "data-val-phone", stringLocalizer); } else if (attribute is UrlAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.DataTypeAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (DataTypeAttribute)attribute, "data-val-url", stringLocalizer); } else if (attribute is FileExtensionsAttribute) { adapter = (IAttributeAdapter)Activator.CreateInstance(Type.GetType("Microsoft.AspNetCore.Mvc.DataAnnotations.FileExtensionsAttributeAdapter, Microsoft.AspNetCore.Mvc.DataAnnotations"), (FileExtensionsAttribute)attribute, stringLocalizer); } else { adapter = defaultClientModelValidatorProvider.GetAttributeAdapter(attribute, stringLocalizer); } #endif return(adapter); }
public IAttributeAdapter GetAttributeAdapter(ValidationAttribute attribute, IStringLocalizer stringLocalizer) { if (attribute == null) { throw new ArgumentNullException(nameof(attribute)); } IAttributeAdapter adapter; var type = attribute.GetType(); if (type == typeof(RegularExpressionAttribute)) { adapter = new RegularExpressionAttributeAdapter((RegularExpressionAttribute)attribute, stringLocalizer); } else if (type == typeof(MaxLengthAttribute)) { adapter = new MaxLengthAttributeAdapter((MaxLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RequiredAttribute)) { adapter = new RequiredAttributeAdapter((RequiredAttribute)attribute, stringLocalizer); } else if (type == typeof(CompareAttribute)) { adapter = new CompareAttributeAdapter((CompareAttribute)attribute, stringLocalizer); } else if (type == typeof(MinLengthAttribute)) { adapter = new MinLengthAttributeAdapter((MinLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(CreditCardAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-creditcard", stringLocalizer); } else if (type == typeof(StringLengthAttribute)) { adapter = new StringLengthAttributeAdapter((StringLengthAttribute)attribute, stringLocalizer); } else if (type == typeof(RangeAttribute)) { adapter = new RangeAttributeAdapterExt((RangeAttribute)attribute, stringLocalizer); } else if (type == typeof(DynamicRangeAttribute)) { adapter = new DynamicRangeAttributeAdapter((DynamicRangeAttribute)attribute, stringLocalizer); } else if (type == typeof(EmailAddressAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-email", stringLocalizer); } else if (type == typeof(PhoneAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-phone", stringLocalizer); } else if (type == typeof(UrlAttribute)) { adapter = new DataTypeAttributeAdapter((DataTypeAttribute)attribute, "data-val-url", stringLocalizer); } else { adapter = null; } return(adapter); }