Можно ли использовать переменную для аннотации данных `[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 является динамически генерируемой строкой

Ответы на вопрос(5)

Ваш ответ на вопрос