Можно ли использовать переменную для аннотации данных `[Display (Name =“ Something ”)]` в MVC3 (C #)
не знаю почему, но аннотация данных в MVC3 требует наличия постоянных значений, которые я просто не могу понять для таких вещей, как сообщения об ошибках и отображаемые имена. Мне нравятся эти аннотации, они настолько просты в использовании и настолько мощны, но что если вам нужно поддерживать несколько языков?
Представьте, что у меня есть следующая модель:
public class Person
{
public string First_Name { get; set; }
}
Если я ничего не изменяю и использую представления CRUD, которые MVC3 создаст для меня, рядом с текстовыми полями появится надпись «First_Name», поэтому я добавляю аннотацию данных, чтобы изменить отображаемое имя следующим образом:
public class Person
{
[Display(Name="First name")]
public string First_Name { get; set; }
}
Который работает просто отлично. Но я хочу предоставить другое отображаемое имя в зависимости от языка пользователя, используя функцию, которую я сделал ранееGetDisplayName(string ToGet, string Language)
которая просто возвращает интересующую меня строку, но если я изменю свою аннотацию данных на эту:
public class Person
{
[Display(Name=GetDisplayName("First_Name", "English"))]
public string First_Name { get; set; }
}
Тогда я получаю ошибку компилятора, говорящую мне, что аннотация требует постоянных значений, ПОЧЕМУ ????
Кто-нибудь знает способ достичь того, что я пытаюсь сделать? Спасибо
UPDATE
Хорошо, похоже, что лучший способ сделать это с.resx
файлы ресурсов в соответствии с несколькими ответами ниже и в других сообщениях. который прекрасно работает по большей части.
Кто-нибудь знает, как я могу запросить ресурс с именем переменной? на этот раз не в контексте атрибутов данных, а только в контроллерах и представлениях.
В основном на данный момент я получаю на ресурсы с@Resources.SomeKey
но я хотел бы иметь возможность использовать это в функции в@Resources["SomeOtherKey"]
гдеSomeOtherKey
является динамически генерируемой строкой