Я могу локализовать свойства классов модели следующим образом:
public class Person
{
[Display(Name = ResourceKeys.Person_FirstName)]
[Required(Name = ResourceKeys.Person_FirstName_Required)]
public string FirstName { get; set; }
//...other properties
}
Где "ResourceKeys" - это специальный класс, который хранит ключи "псевдо" и связывает их с "правильными" ключами всоответствующий файл ресурса:
public class ResourceKeys
{
public const string Person_FirstName = "FirstName"; // looks up for key "FirstName" in Person."culture".resx file
public const string Person_FirstName_Required = "FirstName_Required"; //dtto
//...
}
Это хорошо работает - например, @ Html.DisplayNameFor (model => model.FirstName) правильно локализован и отображается как Vorname для немецкого языка.
Теперь к проблеме.При создании нового класса производные свойства не локализуются:
public class Student : Person
{
//...
}
Например, @ Html.DisplayNameFor (model => model.FirstName), вероятно, вообще не локализован и отображается как «FirstName».Похоже, что ключ ищется только в файле ресурсов ученика, и поскольку он не найден, сам ключ отображается.
Я определенно хочу избежать дубликатов в файлах ресурсов базовых и производных классов.Как мне этого добиться?
Редактировать: Локализация производных свойств не работает, даже если класс ResourceKeys опущен, а строки аннотаций напрямую «жестко закодированы»:
public class Person
{
[Display(Name = "FirstName")]
[Required(Name = "FirstName_Required")]
public string FirstName { get; set; }
//...other properties
}