Ist es möglich, eine Variable für die Datenanmerkung "[Anzeige (Name =" Etwas ")" in MVC3 (C #) zu verwenden?

Ich weiß nicht warum, aber die Datenanmerkungen in MVC3 bestehen darauf, konstante Werte zu haben, die ich für Dinge wie Fehlermeldungen und Anzeigenamen einfach nicht verstehe. Ich liebe diese Anmerkungen, sie sind so einfach zu bedienen und so mächtig, aber was ist, wenn Sie mehrere Sprachen unterstützen müssen?

Stellen Sie sich vor, ich habe das folgende Modell:

public class Person
{
    public string First_Name { get; set; }
}

Wenn ich nichts ändere und die CRUD-Ansichten verwende, die MVC3 für mich erstellt, erhalte ich eine Beschriftung neben den Textfeldern mit der Aufschrift "Vorname". Daher füge ich die Datenanmerkung hinzu, um den Anzeigenamen wie folgt zu ändern:

public class Person
{
    [Display(Name="First name")]
    public string First_Name { get; set; }
}

Welches funktioniert gut. Aber ich möchte einen anderen Anzeigenamen abhängig von der Benutzersprache unter Verwendung einer Funktion angeben, die ich vorher gemacht habeGetDisplayName(string ToGet, string Language) Das gibt nur den String zurück, an dem ich interessiert bin, aber wenn ich meine Datenanmerkung in diesen ändere:

public class Person
{
    [Display(Name=GetDisplayName("First_Name", "English"))]
    public string First_Name { get; set; }
}

Dann erhalte ich einen Compilerfehler, der mir mitteilt, dass die Annotation konstante Werte erfordert, WARUM ????

Kennt jemand einen Weg, um zu erreichen, was ich versuche zu tun? Vielen Dank

AKTUALISIEREN

Ok, es scheint, dass der beste Weg, dies zu tun, mit ist.resx Ressourcendateien gemäß den folgenden Antworten und denen in anderen Beiträgen. was größtenteils großartig funktioniert.

Weiß jemand, wie ich eine Ressource mit einem Variablennamen anfordern kann? Diesmal nicht im Kontext von Datenattributen, sondern nur in Controllern und Views.

Grundsätzlich komme ich im Moment mit den Ressourcen zurecht@Resources.SomeKey aber ich möchte in der Lage sein, das innerhalb einer Funktion in einem zu verwenden@Resources["SomeOtherKey"] woherSomeOtherKey ist eine dynamisch generierte Zeichenfolge.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage