/// <summary> /// Use DB for localization /// </summary> /// <param name="provider"></param> /// <param name="localizer">localizer factory</param> /// <param name="mbErrors">Model binding errors</param> public static void SetLocalizedModelBindingErrorMessages(this DefaultModelBindingMessageProvider provider, ModelBindingErrors mbErrors, IStringLocalizer localizer) { provider.SetAttemptedValueIsInvalidAccessor((x, y) => GetLoclizedModelBindingError(localizer, mbErrors.AttemptedValueIsInvalidAccessor, x, y)); provider.SetMissingBindRequiredValueAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.MissingBindRequiredValueAccessor, x)); provider.SetMissingKeyOrValueAccessor(() => GetLoclizedModelBindingError(localizer, mbErrors.MissingKeyOrValueAccessor)); provider.SetMissingRequestBodyRequiredValueAccessor(() => GetLoclizedModelBindingError(localizer, mbErrors.MissingRequestBodyRequiredValueAccessor)); provider.SetNonPropertyAttemptedValueIsInvalidAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.NonPropertyAttemptedValueIsInvalidAccessor, x)); provider.SetNonPropertyUnknownValueIsInvalidAccessor(() => GetLoclizedModelBindingError(localizer, mbErrors.NonPropertyUnknownValueIsInvalidAccessor)); provider.SetNonPropertyValueMustBeANumberAccessor(() => GetLoclizedModelBindingError(localizer, mbErrors.NonPropertyValueMustBeANumberAccessor)); provider.SetUnknownValueIsInvalidAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.UnknownValueIsInvalidAccessor, x)); provider.SetValueIsInvalidAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.ValueIsInvalidAccessor, x)); provider.SetValueMustBeANumberAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.ValueMustBeANumberAccessor, x)); provider.SetValueMustNotBeNullAccessor((x) => GetLoclizedModelBindingError(localizer, mbErrors.ValueMustNotBeNullAccessor, x)); }
/// <summary> /// Sets all properties of the <see cref="ModelBindingMessageProvider"/> to the specified culture of <paramref name="localizer"/>. /// </summary> /// <param name="provider">An instance of the <see cref="DefaultModelBindingMessageProvider"/>.</param> /// <param name="localizer">The service that provides localized strings.</param> public static void SetLocalizedModelBindingErrorMessages(this DefaultModelBindingMessageProvider provider, IStringLocalizer localizer) { provider.SetNonPropertyValueMustBeANumberAccessor(() => localizer[ModelBindingResources.HtmlGeneration_NonPropertyValueMustBeNumber]); provider.SetValueIsInvalidAccessor((x) => localizer[ModelBindingResources.HtmlGeneration_ValueIsInvalid, x]); provider.SetValueMustBeANumberAccessor((x) => localizer[ModelBindingResources.HtmlGeneration_ValueMustBeNumber, x]); provider.SetMissingKeyOrValueAccessor(() => localizer[ModelBindingResources.KeyValuePair_BothKeyAndValueMustBePresent]); provider.SetMissingBindRequiredValueAccessor((x) => localizer[ModelBindingResources.ModelBinding_MissingBindRequiredMember, x]); provider.SetMissingRequestBodyRequiredValueAccessor(() => localizer[ModelBindingResources.ModelBinding_MissingRequestBodyRequiredMember]); provider.SetValueMustNotBeNullAccessor((x) => localizer[ModelBindingResources.ModelBinding_NullValueNotValid, x]); provider.SetAttemptedValueIsInvalidAccessor((x, y) => localizer[ModelBindingResources.ModelState_AttemptedValueIsInvalid, x, y]); provider.SetNonPropertyAttemptedValueIsInvalidAccessor((x) => localizer[ModelBindingResources.ModelState_NonPropertyAttemptedValueIsInvalid, x]); provider.SetNonPropertyUnknownValueIsInvalidAccessor(() => localizer[ModelBindingResources.ModelState_NonPropertyUnknownValueIsInvalid]); provider.SetUnknownValueIsInvalidAccessor((x) => localizer[ModelBindingResources.ModelState_UnknownValueIsInvalid, x]); }
/// <summary> /// Creates a new instance of <see cref="MvcOptions"/>. /// </summary> public MvcOptions() { CacheProfiles = new Dictionary <string, CacheProfile>(StringComparer.OrdinalIgnoreCase); Conventions = new List <IApplicationModelConvention>(); Filters = new FilterCollection(); FormatterMappings = new FormatterMappings(); InputFormatters = new FormatterCollection <IInputFormatter>(); OutputFormatters = new FormatterCollection <IOutputFormatter>(); ModelBinderProviders = new List <IModelBinderProvider>(); ModelBindingMessageProvider = new DefaultModelBindingMessageProvider(); ModelMetadataDetailsProviders = new List <IMetadataDetailsProvider>(); ModelValidatorProviders = new List <IModelValidatorProvider>(); ValueProviderFactories = new List <IValueProviderFactory>(); _allowCombiningAuthorizeFilters = new CompatibilitySwitch <bool>(nameof(AllowCombiningAuthorizeFilters)); _allowBindingHeaderValuesToNonStringModelTypes = new CompatibilitySwitch <bool>(nameof(AllowBindingHeaderValuesToNonStringModelTypes)); _allowValidatingTopLevelNodes = new CompatibilitySwitch <bool>(nameof(AllowValidatingTopLevelNodes)); _inputFormatterExceptionPolicy = new CompatibilitySwitch <InputFormatterExceptionPolicy>(nameof(InputFormatterExceptionPolicy), InputFormatterExceptionPolicy.AllExceptions); _suppressBindingUndefinedValueToEnumType = new CompatibilitySwitch <bool>(nameof(SuppressBindingUndefinedValueToEnumType)); _enableEndpointRouting = new CompatibilitySwitch <bool>(nameof(EnableEndpointRouting)); _switches = new ICompatibilitySwitch[] { _allowCombiningAuthorizeFilters, _allowBindingHeaderValuesToNonStringModelTypes, _allowValidatingTopLevelNodes, _inputFormatterExceptionPolicy, _suppressBindingUndefinedValueToEnumType, _enableEndpointRouting, }; }
public EntityModelMetadata(IModelMetadataProvider provider, ICompositeMetadataDetailsProvider detailsProvider, EntityMetadataDetails details, DefaultModelBindingMessageProvider modelBindingMessageProvider) : base( provider, detailsProvider, details, modelBindingMessageProvider) { _details = details; _detailsProvider = detailsProvider; }
/// <summary> /// Creates a new instance of <see cref="MvcOptions"/>. /// </summary> public MvcOptions() { CacheProfiles = new Dictionary <string, CacheProfile>(StringComparer.OrdinalIgnoreCase); Conventions = new List <IApplicationModelConvention>(); Filters = new FilterCollection(); FormatterMappings = new FormatterMappings(); InputFormatters = new FormatterCollection <IInputFormatter>(); OutputFormatters = new FormatterCollection <IOutputFormatter>(); ModelBinderProviders = new List <IModelBinderProvider>(); ModelBindingMessageProvider = new DefaultModelBindingMessageProvider(); ModelMetadataDetailsProviders = new List <IMetadataDetailsProvider>(); ModelValidatorProviders = new List <IModelValidatorProvider>(); ValueProviderFactories = new List <IValueProviderFactory>(); _inputFormatterExceptionPolicy = new CompatibilitySwitch <InputFormatterExceptionPolicy>(nameof(InputFormatterExceptionPolicy), InputFormatterExceptionPolicy.AllExceptions); _suppressBindingUndefinedValueToEnumType = new CompatibilitySwitch <bool>(nameof(SuppressBindingUndefinedValueToEnumType)); _allowShortCircuitingValidationWhenNoValidatorsArePresent = new CompatibilitySwitch <bool>(nameof(AllowShortCircuitingValidationWhenNoValidatorsArePresent)); _switches = new ICompatibilitySwitch[] { _inputFormatterExceptionPolicy, _suppressBindingUndefinedValueToEnumType, _allowShortCircuitingValidationWhenNoValidatorsArePresent, }; }
internal static void SetLocalizedModelBindingErrorMessages <T>(this DefaultModelBindingMessageProvider provider) where T : class { provider.SetAttemptedValueIsInvalidAccessor((x, y) => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelState_AttemptedValueIsInvalid, x, y)); provider.SetMissingBindRequiredValueAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelBinding_MissingBindRequiredMember, x)); provider.SetMissingKeyOrValueAccessor(() => GetLoclizedModelBindingError <T>(ModelBindingMessages.KeyValuePair_BothKeyAndValueMustBePresent)); provider.SetMissingRequestBodyRequiredValueAccessor(() => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelBinding_MissingRequestBodyRequiredMember)); provider.SetNonPropertyAttemptedValueIsInvalidAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelState_NonPropertyAttemptedValueIsInvalid, x)); provider.SetNonPropertyUnknownValueIsInvalidAccessor(() => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelState_NonPropertyUnknownValueIsInvalid)); provider.SetNonPropertyValueMustBeANumberAccessor(() => GetLoclizedModelBindingError <T>(ModelBindingMessages.HtmlGeneration_NonPropertyValueMustBeNumber)); provider.SetUnknownValueIsInvalidAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelState_UnknownValueIsInvalid, x)); provider.SetValueIsInvalidAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.HtmlGeneration_ValueIsInvalid, x)); provider.SetValueMustBeANumberAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.HtmlGeneration_ValueMustBeNumber, x)); provider.SetValueMustNotBeNullAccessor((x) => GetLoclizedModelBindingError <T>(ModelBindingMessages.ModelBinding_NullValueNotValid, x)); }
/// <summary> /// Create binding metadata and override <see cref="DefaultModelBindingMessageProvider"/> by custom instance of <see cref="ModelBindingErrors"/> /// </summary> /// <param name="context"></param> public void CreateBindingMetadata(BindingMetadataProviderContext context) { var provider = new DefaultModelBindingMessageProvider(); provider.SetAttemptedValueIsInvalidAccessor((x, y) => localizer[mbErrors.AttemptedValueIsInvalidAccessor, x, y]); provider.SetMissingBindRequiredValueAccessor((x) => localizer[mbErrors.MissingBindRequiredValueAccessor, x]); provider.SetMissingKeyOrValueAccessor(() => localizer[mbErrors.MissingKeyOrValueAccessor]); provider.SetMissingRequestBodyRequiredValueAccessor(() => localizer[mbErrors.MissingRequestBodyRequiredValueAccessor]); provider.SetNonPropertyAttemptedValueIsInvalidAccessor((x) => localizer[mbErrors.NonPropertyAttemptedValueIsInvalidAccessor, x]); provider.SetNonPropertyUnknownValueIsInvalidAccessor(() => localizer[mbErrors.NonPropertyUnknownValueIsInvalidAccessor]); provider.SetNonPropertyValueMustBeANumberAccessor(() => localizer[mbErrors.NonPropertyValueMustBeANumberAccessor]); provider.SetUnknownValueIsInvalidAccessor((x) => localizer[mbErrors.UnknownValueIsInvalidAccessor, x]); provider.SetValueIsInvalidAccessor((x) => localizer[mbErrors.ValueIsInvalidAccessor, x]); provider.SetValueMustBeANumberAccessor((x) => localizer[mbErrors.ValueMustBeANumberAccessor, x]); provider.SetValueMustNotBeNullAccessor((x) => localizer[mbErrors.ValueMustNotBeNullAccessor, x]); context.BindingMetadata.ModelBindingMessageProvider = provider; }
public DefaultModelMetadata( IModelMetadataProvider provider, ICompositeMetadataDetailsProvider detailsProvider, DefaultMetadataDetails details, DefaultModelBindingMessageProvider modelBindingMessageProvider) : base(details.Key) { if (provider == null) { throw new ArgumentNullException(nameof(provider)); } if (detailsProvider == null) { throw new ArgumentNullException(nameof(detailsProvider)); } if (details == null) { throw new ArgumentNullException(nameof(details)); } if (modelBindingMessageProvider == null) { throw new ArgumentNullException(nameof(modelBindingMessageProvider)); } _provider = provider; _detailsProvider = detailsProvider; _details = details; _modelBindingMessageProvider = modelBindingMessageProvider; }
public BodyAndOtherSourcesModelBinder(ILoggerFactory loggerFactory, IOptions <MvcOptions> options, IModelBinderFactory modelBinderFactory, IModelMetadataProvider modelMetadataProvider, ICompositeMetadataDetailsProvider detailsProvider) { _logger = loggerFactory.CreateLogger <BodyOrOtherSourcesModelBinder>(); _modelBinderFactory = modelBinderFactory; _modelMetadataProvider = modelMetadataProvider; _modelBindingMessageProvider = options.Value.ModelBindingMessageProvider; _detailsProvider = detailsProvider; }
public BodyOrOtherSourcesModelBinder(IHttpRequestStreamReaderFactory readerFactory, ILoggerFactory loggerFactory, IOptions <MvcOptions> options, IModelBinderFactory modelBinderFactory, IModelMetadataProvider modelMetadataProvider, ICompositeMetadataDetailsProvider detailsProvider) : base(options.Value.InputFormatters, readerFactory, loggerFactory, options.Value) { _logger = loggerFactory.CreateLogger <BodyOrOtherSourcesModelBinder>(); _modelBinderFactory = modelBinderFactory; _providers = options.Value.ModelBinderProviders.ToArray(); _modelMetadataProvider = modelMetadataProvider; _modelBindingMessageProvider = options.Value.ModelBindingMessageProvider; _detailsProvider = detailsProvider; }
public static void Set(DefaultModelBindingMessageProvider messages) { messages.SetAttemptedValueIsInvalidAccessor((value, field) => Validation.For("InvalidField", field)); messages.SetUnknownValueIsInvalidAccessor(field => Validation.For("InvalidField", field)); messages.SetMissingBindRequiredValueAccessor(field => Validation.For("Required", field)); messages.SetValueMustNotBeNullAccessor(field => Validation.For("Required", field)); messages.SetValueIsInvalidAccessor(value => Validation.For("InvalidValue", value)); messages.SetValueMustBeANumberAccessor(field => Validation.For("Numeric", field)); messages.SetMissingKeyOrValueAccessor(() => Validation.For("RequiredValue")); }
public ModelMessagesProvider(DefaultModelBindingMessageProvider messages) { messages.SetAttemptedValueIsInvalidAccessor((value, field) => String.Format(Validations.InvalidField, field)); messages.SetUnknownValueIsInvalidAccessor((field) => String.Format(Validations.InvalidField, field)); messages.SetMissingBindRequiredValueAccessor((field) => String.Format(Validations.Required, field)); messages.SetValueMustNotBeNullAccessor((field) => String.Format(Validations.Required, field)); messages.SetValueIsInvalidAccessor((value) => String.Format(Validations.InvalidValue, value)); messages.SetValueMustBeANumberAccessor((field) => String.Format(Validations.Numeric, field)); messages.SetMissingKeyOrValueAccessor(() => Validations.RequiredValue); }
public static void UseTranslatedResources(this DefaultModelBindingMessageProvider messageProvider) { messageProvider.SetMissingBindRequiredValueAccessor(One(MvcModelBindingResource.MissingBindRequiredValueAccessor)); messageProvider.SetMissingKeyOrValueAccessor(Zero(MvcModelBindingResource.MissingKeyOrValueAccessor)); messageProvider.SetMissingRequestBodyRequiredValueAccessor(Zero(MvcModelBindingResource.MissingRequestBodyRequiredValueAccessor)); messageProvider.SetValueMustNotBeNullAccessor(One(MvcModelBindingResource.ValueMustNotBeNullAccessor)); messageProvider.SetAttemptedValueIsInvalidAccessor(Two(MvcModelBindingResource.AttemptedValueIsInvalidAccessor)); messageProvider.SetNonPropertyAttemptedValueIsInvalidAccessor(One(MvcModelBindingResource.NonPropertyAttemptedValueIsInvalidAccessor)); messageProvider.SetUnknownValueIsInvalidAccessor(One(MvcModelBindingResource.UnknownValueIsInvalidAccessor)); messageProvider.SetNonPropertyUnknownValueIsInvalidAccessor(Zero(MvcModelBindingResource.NonPropertyUnknownValueIsInvalidAccessor)); messageProvider.SetValueIsInvalidAccessor(One(MvcModelBindingResource.ValueIsInvalidAccessor)); messageProvider.SetValueMustBeANumberAccessor(One(MvcModelBindingResource.ValueMustBeANumberAccessor)); messageProvider.SetNonPropertyValueMustBeANumberAccessor(Zero(MvcModelBindingResource.NonPropertyValueMustBeANumberAccessor)); }
/// <summary> /// Creates a new instance of <see cref="MvcOptions"/>. /// </summary> public MvcOptions() { CacheProfiles = new Dictionary <string, CacheProfile>(StringComparer.OrdinalIgnoreCase); Conventions = new List <IApplicationModelConvention>(); Filters = new FilterCollection(); FormatterMappings = new FormatterMappings(); InputFormatters = new FormatterCollection <IInputFormatter>(); OutputFormatters = new FormatterCollection <IOutputFormatter>(); ModelBinderProviders = new List <IModelBinderProvider>(); ModelBindingMessageProvider = new DefaultModelBindingMessageProvider(); ModelMetadataDetailsProviders = new List <IMetadataDetailsProvider>(); ModelValidatorProviders = new List <IModelValidatorProvider>(); ValueProviderFactories = new List <IValueProviderFactory>(); }
public DefaultModelBindingMessageProvider(DefaultModelBindingMessageProvider originalProvider) { if (originalProvider == null) { throw new ArgumentNullException(nameof(originalProvider)); } SetMissingBindRequiredValueAccessor(originalProvider.MissingBindRequiredValueAccessor); SetMissingKeyOrValueAccessor(originalProvider.MissingKeyOrValueAccessor); SetMissingRequestBodyRequiredValueAccessor(originalProvider.MissingRequestBodyRequiredValueAccessor); SetValueMustNotBeNullAccessor(originalProvider.ValueMustNotBeNullAccessor); SetAttemptedValueIsInvalidAccessor(originalProvider.AttemptedValueIsInvalidAccessor); SetNonPropertyAttemptedValueIsInvalidAccessor(originalProvider.NonPropertyAttemptedValueIsInvalidAccessor); SetUnknownValueIsInvalidAccessor(originalProvider.UnknownValueIsInvalidAccessor); SetNonPropertyUnknownValueIsInvalidAccessor(originalProvider.NonPropertyUnknownValueIsInvalidAccessor); SetValueIsInvalidAccessor(originalProvider.ValueIsInvalidAccessor); SetValueMustBeANumberAccessor(originalProvider.ValueMustBeANumberAccessor); SetNonPropertyValueMustBeANumberAccessor(originalProvider.NonPropertyValueMustBeANumberAccessor); }
public static void Translate(this DefaultModelBindingMessageProvider source) { source.SetValueIsInvalidAccessor( (x) => "Valor inválido"); source.SetValueMustBeANumberAccessor( (x) => "Informe somente números"); source.SetMissingBindRequiredValueAccessor( (x) => "Campo obrigatório"); source.SetAttemptedValueIsInvalidAccessor( (x, y) => $"O valor '{x}' não é válido para {y}."); source.SetMissingKeyOrValueAccessor( () => "Campo obrigatório"); source.SetUnknownValueIsInvalidAccessor( (x) => "Valor inválido"); source.SetValueMustNotBeNullAccessor( (x) => "Campo obrigatório"); source.SetMissingRequestBodyRequiredValueAccessor( () => "Campo obrigatório"); }
public void should_use_zh_cn_model_binding_messages() { var messageProvider = new DefaultModelBindingMessageProvider(); messageProvider.UseTranslatedResources(); var messages = new[] { messageProvider.ValueIsInvalidAccessor("val"), messageProvider.AttemptedValueIsInvalidAccessor("abcd", "defg"), messageProvider.MissingBindRequiredValueAccessor("field"), messageProvider.MissingKeyOrValueAccessor(), messageProvider.UnknownValueIsInvalidAccessor("value"), messageProvider.MissingRequestBodyRequiredValueAccessor(), messageProvider.ValueMustBeANumberAccessor("value"), messageProvider.ValueMustNotBeNullAccessor("value"), messageProvider.NonPropertyAttemptedValueIsInvalidAccessor("prop"), messageProvider.NonPropertyUnknownValueIsInvalidAccessor(), messageProvider.NonPropertyValueMustBeANumberAccessor() }; messages.ToList().ForEach(msg => Assert.True(HasChinese(msg))); }
public CustomModelMetadata(ICustomModelMetadataProviderSingleton provider, ICompositeMetadataDetailsProvider detailsProvider, DefaultMetadataDetails details, DefaultModelBindingMessageProvider modelBindingMessageProvider) : base(provider, detailsProvider, details, modelBindingMessageProvider) { _customProvider = provider; }
public ModelMessagesProviderTests() { messages = new DefaultModelBindingMessageProvider(); ModelMessagesProvider.Set(messages); }