2015-10-20 4 views
0

Я переношу приложение из предыдущей версии ASP.NET в ASP.NET 5 (vNext, MVC 6). Раньше я локализованы формы с DisplayAttribute присоединенных к свойствам ViewModel в:ASP.NET 5: исчезла локализация с DisplayAttribute?

[Required(ErrorMessageResourceName = "FieldIsRequired", ErrorMessageResourceType = typeof(Resources.Validation))] 
[Display(Name = "UserName", ResourceType = typeof(Resources.Common))] 
public string UserName { get; set; } 

Я добавил DataAnnotations обслуживания:

public void ConfigureServices(IServiceCollection services) 
{ 
    services.AddMvc() 
      .AddViewLocalization(options => options.ResourcesPath = "Resources/Views") 
      .AddDataAnnotationsLocalization(); 
} 

Когда я подам недопустимую форму, сообщение об ошибке получает локализованное (как указано в атрибуте [Required]) ,

Но, пытаясь отобразить форму, я получил исключение (нет открытого свойства «UserName» в классе ресурсов), пока я не прокомментировал атрибут [Display].

Похоже, что метки ввода не могут быть локализованы с [DisplayAttribute] больше?

Спасибо!

+1

У вас есть файл resx? Можете ли вы включить это в свой пост? – Dealdiane

+0

Да, файл .resx является частью проекта веб-сайта asp.net. Я создал пасту с ее содержимым (как xml): http://pastebin.com/7h1Vhu7s. У генерируемого класса действительно есть модификаторы «внутреннего» доступа (и я не могу изменить его в проекте ASP.NET 5), но он работает для сообщений об ошибках проверки. – nativehr

+0

Он должен работать, если вы вручную измените модификатор сгенерированного класса на 'public'. Следите за этой [проблемой] (https://github.com/aspnet/Localization/issues/31), так как она связана с вашим вопросом. – Dealdiane

ответ

1

Это действительно исчезло. Согласно documentation:

Время выполнения не ищет локализованные строки для атрибутов неаудификации. В приведенном выше коде «Электронная почта» (из [Display (Name = «Email»)]) не будет локализован.

Update 20.03.2017:

Локализация атрибутов без проверки был вновь включен с новым .NET SDK ядра, в соответствии с updated documentation:

сообщения об ошибках DataAnnotations локализован с IStringLocalizer<T>. Использование опции ResourcesPath = "Resources", сообщения об ошибках в RegisterViewModel могут быть сохранены в одном из следующих путей:

  • Ресурсы/ViewModels.Account.RegisterViewModel.fr.resx
  • Ресурсы/ViewModels/счета/RegisterViewModel.fr .resx
Смежные вопросы