mirror of https://github.com/abpframework/abp.git
4 changed files with 71 additions and 1 deletions
@ -0,0 +1,46 @@ |
|||
using System.Collections.Generic; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
using Volo.Abp.AspNetCore.Mvc.Validation; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Validation; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc.Localization |
|||
{ |
|||
[Dependency(ReplaceServices = true)] |
|||
public class AbpMvcAttributeValidationResultProvider : DefaultAttributeValidationResultProvider |
|||
{ |
|||
private readonly AbpMvcDataAnnotationsLocalizationOptions _abpMvcDataAnnotationsLocalizationOptions; |
|||
private readonly IStringLocalizerFactory _stringLocalizerFactory; |
|||
|
|||
public AbpMvcAttributeValidationResultProvider( |
|||
IOptions<AbpMvcDataAnnotationsLocalizationOptions> abpMvcDataAnnotationsLocalizationOptions, |
|||
IStringLocalizerFactory stringLocalizerFactory) |
|||
{ |
|||
_abpMvcDataAnnotationsLocalizationOptions = abpMvcDataAnnotationsLocalizationOptions.Value; |
|||
_stringLocalizerFactory = stringLocalizerFactory; |
|||
} |
|||
|
|||
public override ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext) |
|||
{ |
|||
var resourceSource = _abpMvcDataAnnotationsLocalizationOptions.AssemblyResources.GetOrDefault(validationContext.ObjectType.Assembly); |
|||
if (resourceSource == null) |
|||
{ |
|||
return base.GetOrDefault(validationAttribute, validatingObject, validationContext); |
|||
} |
|||
|
|||
if (validationAttribute.ErrorMessage == null) |
|||
{ |
|||
ValidationAttributeHelper.SetDefaultErrorMessage(validationAttribute); |
|||
} |
|||
|
|||
if (validationAttribute.ErrorMessage != null) |
|||
{ |
|||
validationAttribute.ErrorMessage = _stringLocalizerFactory.Create(resourceSource)[validationAttribute.ErrorMessage]; |
|||
} |
|||
|
|||
return base.GetOrDefault(validationAttribute, validatingObject, validationContext); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,13 @@ |
|||
using System.ComponentModel.DataAnnotations; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.Validation |
|||
{ |
|||
public class DefaultAttributeValidationResultProvider : IAttributeValidationResultProvider, ITransientDependency |
|||
{ |
|||
public virtual ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext) |
|||
{ |
|||
return validationAttribute.GetValidationResult(validatingObject, validationContext); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using System.ComponentModel.DataAnnotations; |
|||
|
|||
namespace Volo.Abp.Validation |
|||
{ |
|||
public interface IAttributeValidationResultProvider |
|||
{ |
|||
ValidationResult GetOrDefault(ValidationAttribute validationAttribute, object validatingObject, ValidationContext validationContext); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue