Ich hatte den folgenden Code:
%Vor%Ich versuche, die Fehlermeldung dynamisch zu machen, aber ich bekomme einen Fehler, wenn kompiliert .:
"An attribute argument must be a constant expression , typeof expression or array creation expression of an attribute parameter type."
Gibt es eine Lösung für dieses Problem?
Zuerst erstellen Sie eine Ressourcendatei .resx, die Ihre lokalisierten Zeichenfolgen enthält.
Wenn Sie das Attribut deklarieren, setzen Sie das Argument ResourceType. Dies führt dazu, dass die Argumente Name, ShortName und Description als Ressourcenschlüssel anstelle eines Werts verwendet werden.
%Vor%Die Fehlermeldung besagt "ein Attributargument muss ein konstanter Ausdruck sein ...".
Dies bedeutet, dass das Argument für das DisplayName
-Attribut ein konstanter Ausdruck sein muss (z. B. ein String, eine Ganzzahl usw.) oder eine der anderen in der Fehlermeldung aufgeführten Ausdruckstypen.
Wenn Sie eine Eigenschaft lokalisieren möchten, benötigen Sie ein Attribut, das sie unterstützt. Wenn Sie ASP.Net 4 verwenden, sollte DisplayAttribute wie folgt aussehen:
%Vor%Überprüfen Sie auch diese Antwort von Darin
Reagieren sehr spät.
DataAnnotations-Parameterwerte erfordern Konstanten, tatsächliche Zeichenfolgen. Also kannst du hier keine Methode schreiben. Benötigen Sie irgendeine Art von Lokalisierung, dann erstellen Sie eine Ressourcendatei. Dann schreibe einen Code wie diesen. Hier sind "RequiredField" und "Email" Schlüssel in der Ressourcendatei und "ViewModelResource" ist der Name der Ressourcendatei.
%Vor%Wenn Sie eine benutzerdefinierte Nachricht für Bedingungen erstellen möchten, erstellen Sie Ihre eigenen "benutzerdefinierten Datenanmerkungen" abhängig von den Bedingungen.
Tags und Links asp.net-mvc c# asp.net-mvc-4 data-annotations