Browse Source

Refactored AbpDataAnnotationAutoLocalizationMetadataDetailsProvider

pull/400/head
Halil ibrahim Kalkan 8 years ago
parent
commit
fc40d2f79b
  1. 27
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs
  2. 4
      framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs

27
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/AbpDataAnnotationAutoLocalizationMetadataDetailsProvider.cs

@ -12,6 +12,8 @@ namespace Volo.Abp.AspNetCore.Mvc
{ {
public class AbpDataAnnotationAutoLocalizationMetadataDetailsProvider : IDisplayMetadataProvider public class AbpDataAnnotationAutoLocalizationMetadataDetailsProvider : IDisplayMetadataProvider
{ {
private const string PropertyLocalizationKeyPrefix = "Property:";
private readonly Lazy<IStringLocalizerFactory> _stringLocalizerFactory; private readonly Lazy<IStringLocalizerFactory> _stringLocalizerFactory;
private readonly Lazy<IOptions<MvcDataAnnotationsLocalizationOptions>> _localizationOptions; private readonly Lazy<IOptions<MvcDataAnnotationsLocalizationOptions>> _localizationOptions;
@ -24,27 +26,38 @@ namespace Volo.Abp.AspNetCore.Mvc
public void CreateDisplayMetadata(DisplayMetadataProviderContext context) public void CreateDisplayMetadata(DisplayMetadataProviderContext context)
{ {
var displayMetadata = context.DisplayMetadata; var displayMetadata = context.DisplayMetadata;
if (displayMetadata.DisplayName != null) if (displayMetadata.DisplayName != null)
{ {
return; return;
} }
var attributes = context.Attributes; var attributes = context.Attributes;
var displayAttribute = attributes.OfType<DisplayAttribute>().FirstOrDefault();
var displayNameAttribute = attributes.OfType<DisplayNameAttribute>().FirstOrDefault();
if (displayAttribute != null || displayNameAttribute != null) if (attributes.OfType<DisplayAttribute>().Any() ||
attributes.OfType<DisplayNameAttribute>().Any())
{
return;
}
if (_localizationOptions.Value.Value.DataAnnotationLocalizerProvider == null)
{ {
return; return;
} }
var containerType = context.Key.ContainerType ?? context.Key.ModelType; var containerType = context.Key.ContainerType ?? context.Key.ModelType;
var localizer = _localizationOptions.Value.Value.DataAnnotationLocalizerProvider(containerType, _stringLocalizerFactory.Value); var localizer = _localizationOptions.Value.Value.DataAnnotationLocalizerProvider(containerType, _stringLocalizerFactory.Value);
if (context.Key.Name == "BirthDate")
displayMetadata.DisplayName = () =>
{ {
displayMetadata.DisplayName = () => localizer[context.Key.Name]; var localizedString = localizer[PropertyLocalizationKeyPrefix + context.Key.Name];
}
if (localizedString.ResourceNotFound)
{
localizedString = localizer[context.Key.Name];
}
return localizedString;
};
} }
} }
} }

4
framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Localization/AbpMvcDataAnnotationsLocalizationOptions.cs

@ -15,12 +15,12 @@ namespace Volo.Abp.AspNetCore.Mvc.Localization
} }
public void AddAssemblyResource( public void AddAssemblyResource(
[NotNull] Type resourceType, [NotNull] Type resourceType,
params Assembly[] assemblies) params Assembly[] assemblies)
{ {
if (assemblies.IsNullOrEmpty()) if (assemblies.IsNullOrEmpty())
{ {
assemblies = new Assembly[] {resourceType.Assembly}; assemblies = new[] { resourceType.Assembly };
} }
foreach (var assembly in assemblies) foreach (var assembly in assemblies)

Loading…
Cancel
Save