Я переношу приложение из предыдущей версии 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]
больше?
Спасибо!
У вас есть файл resx? Можете ли вы включить это в свой пост? – Dealdiane
Да, файл .resx является частью проекта веб-сайта asp.net. Я создал пасту с ее содержимым (как xml): http://pastebin.com/7h1Vhu7s. У генерируемого класса действительно есть модификаторы «внутреннего» доступа (и я не могу изменить его в проекте ASP.NET 5), но он работает для сообщений об ошибках проверки. – nativehr
Он должен работать, если вы вручную измените модификатор сгенерированного класса на 'public'. Следите за этой [проблемой] (https://github.com/aspnet/Localization/issues/31), так как она связана с вашим вопросом. – Dealdiane