ASP.NET MVC4: Ein Attributargument muss ein Konstantenausdruck, ein Ausdruckstyp oder ein Arrayerstellungsausdruck eines Attributparametertyps sein

8

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?

    
MiaoWin 21.02.2013, 09:50
quelle

3 Antworten

9

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%     
ywm 21.02.2013 12:12
quelle
3

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

    
Karthik Chintala 21.02.2013 09:58
quelle
2

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.

    
Kishan Choudhary 13.10.2015 15:40
quelle