public LocalizedModelValidatorProviderTests() { _stringProvider = new Mock <IValidationMessageDataSource>(); ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(_stringProvider.Object); _provider = new LocalizedModelValidatorProvider(); }
public void DefaultMessage() { ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(new DataAnnotationDefaultStrings()); var model = new TestModel(); var validator = GetValidator(model, "Required"); var actual = validator.Validate(model).First().Message; Assert.Equal("The Required field is required.", actual); }
/// <summary> /// Gets a list of validators. /// </summary> /// <param name="metadata">The metadata.</param> /// <param name="context">The context.</param> /// <param name="attributes">The list of validation attributes.</param> /// <returns> /// A list of validators. /// </returns> protected override IEnumerable <ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable <Attribute> attributes) { var items = attributes.ToList(); if (AddImplicitRequiredAttributeForValueTypes && metadata.IsRequired && !items.Any(a => a is RequiredAttribute)) { items.Add(new RequiredAttribute()); } var validators = new List <ModelValidator>(); foreach (var attr in items.OfType <ValidationAttribute>()) { // custom message, use the default localization if (attr.ErrorMessageResourceName != null && attr.ErrorMessageResourceType != null) { validators.Add(new DataAnnotationsModelValidator(metadata, context, attr)); continue; } // specified a message, do nothing if (attr.ErrorMessage != null && attr.ErrorMessage != WorkaroundMarker) { validators.Add(new DataAnnotationsModelValidator(metadata, context, attr)); continue; } var ctx = new GetMessageContext(attr, metadata.ContainerType, metadata.PropertyName, Thread.CurrentThread.CurrentUICulture); var errorMessage = ValidationMessageProviders.GetMessage(ctx); var formattedError = errorMessage == null ? GetMissingTranslationMessage(metadata, attr) : FormatErrorMessage(metadata, attr, errorMessage); var clientRules = GetClientRules(metadata, context, attr, formattedError); validators.Add(new MyValidator(attr, formattedError, metadata, context, clientRules)); } if (metadata.Model is IValidatableObject) { validators.Add(new Griffin.MvcContrib.Localization.ValidatableObjectAdapter(metadata, context)); } return(validators); }
public void ClientValidatable() { ValidationMessageProviders.Reset(); var model = new TestModel(); var k = new DataAnnotationsModelMetadataProvider(); var metadata = k.GetMetadataForType(() => model, model.GetType()); var validators = _provider.GetValidators(metadata, new ControllerContext()); var result = validators.ToList().First().Validate(model).ToList(); Assert.NotEqual(0, result.Count); }
public void CompareAttribute() { ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(new MvcDataSource()); var model = new TestModel(); model.Compare2 = "Differ"; model.Compare1 = "Aaa"; var validator = GetValidator(model, "Compare1"); var actual = validator.Validate(model).First().Message; Assert.Equal("The Compare1 and Compare2 fields to not match.", actual); }
public void RegEx() { ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(new DataAnnotationDefaultStrings()); var model = new TestModel { RegEx = "word" }; var validator = GetValidator(model, "RegEx"); var actual = validator.Validate(model).First().Message; // regex can't be identified in the DataAnnotations resource file :( Assert.Equal("[en-US: RegularExpression]", actual); }
public static void RegisterValidators() { var stringProvider = new ResourceStringProvider(Resources.LocalizedStrings.ResourceManager); ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider); ModelValidatorProviders.Providers.Clear(); ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(new MvcDataSource()); ValidationMessageProviders.Add(new DataAnnotationDefaultStrings()); ValidationMessageProviders.Add(new GriffinStringsProvider(stringProvider)); var validatorProvider = new LocalizedModelValidatorProvider(); ModelValidatorProviders.Providers.Add(validatorProvider); }
protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); var stringProvider = new ResourceStringProvider(Resources.Resources.ResourceManager); System.Web.Mvc.ModelMetadataProviders.Current = new LocalizedModelMetadataProvider(stringProvider); ValidationMessageProviders.Clear(); ValidationMessageProviders.Add(new GriffinStringsProvider(stringProvider)); // the rest ValidationMessageProviders.Add(new MvcDataSource()); //mvc attributes ValidationMessageProviders.Add(new DataAnnotationDefaultStrings()); //data annotation attributes System.Web.Mvc.ModelValidatorProviders.Providers.Clear(); System.Web.Mvc.ModelValidatorProviders.Providers.Add(new LocalizedModelValidatorProvider()); DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; }