mirror of https://github.com/abpframework/abp.git
3 changed files with 59 additions and 1 deletions
@ -0,0 +1,50 @@ |
|||
using System; |
|||
using System.ComponentModel; |
|||
using System.ComponentModel.DataAnnotations; |
|||
using System.Linq; |
|||
using Microsoft.AspNetCore.Mvc.DataAnnotations; |
|||
using Microsoft.AspNetCore.Mvc.ModelBinding.Metadata; |
|||
using Microsoft.Extensions.DependencyInjection; |
|||
using Microsoft.Extensions.Localization; |
|||
using Microsoft.Extensions.Options; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Mvc |
|||
{ |
|||
public class AbpDataAnnotationAutoLocalizationMetadataDetailsProvider : IDisplayMetadataProvider |
|||
{ |
|||
private readonly Lazy<IStringLocalizerFactory> _stringLocalizerFactory; |
|||
private readonly Lazy<IOptions<MvcDataAnnotationsLocalizationOptions>> _localizationOptions; |
|||
|
|||
public AbpDataAnnotationAutoLocalizationMetadataDetailsProvider(IServiceCollection services) |
|||
{ |
|||
_stringLocalizerFactory = services.GetRequiredServiceLazy<IStringLocalizerFactory>(); |
|||
_localizationOptions = services.GetRequiredServiceLazy<IOptions<MvcDataAnnotationsLocalizationOptions>>(); |
|||
} |
|||
|
|||
public void CreateDisplayMetadata(DisplayMetadataProviderContext context) |
|||
{ |
|||
var displayMetadata = context.DisplayMetadata; |
|||
|
|||
if (displayMetadata.DisplayName != null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var attributes = context.Attributes; |
|||
var displayAttribute = attributes.OfType<DisplayAttribute>().FirstOrDefault(); |
|||
var displayNameAttribute = attributes.OfType<DisplayNameAttribute>().FirstOrDefault(); |
|||
|
|||
if (displayAttribute != null || displayNameAttribute != null) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
var containerType = context.Key.ContainerType ?? context.Key.ModelType; |
|||
var localizer = _localizationOptions.Value.Value.DataAnnotationLocalizerProvider(containerType, _stringLocalizerFactory.Value); |
|||
if (context.Key.Name == "BirthDate") |
|||
{ |
|||
displayMetadata.DisplayName = () => localizer[context.Key.Name]; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue