Как я могу локализовать отображаемое имя производного свойства? - PullRequest
0 голосов
/ 05 июня 2019

Я могу локализовать свойства классов модели следующим образом:

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
}
...