2010-03-21 1 views
5

Im Anwendung versucht, eine angepasste Version des RequiredAttribute zu schaffen die eingebaut zu ersetzen und ich habe es für Eigenschaften arbeiten Kapiert have Strings-Werte, aber mit Eigenschaften, die DateTime oder Integer zum Beispiel sind, wird der Standardwert RequiredAttribute automatisch angewendet (WENN die Eigenschaft keine NULL-Werte erlaubt!)DataAnnotations in ASP.NET MVC 2 - MVC Stopp von RequiredAttribute zu Nicht-Nullable-Datetime usw. Eigenschaften

Mein Problem ist, dass ich in der Lage sein soll, eine DateTime-Eigenschaft anzugeben Wie benötigt, benutze ich meinen benutzerdefinierten Validator, der die Fehlermeldung von einer Ressourcendatei erhält (ich möchte nicht das RequiredAttribute den Typ der Ressourcendatei und den Schlüssel jedes Mal mitteilen müssen, wenn ich es anwende. Deshalb mache ich eine benutzerdefinierte.)

Wie kann ich verhindern, dass der Rahmen aus dem gewünschten Attribute zu Eigenschaften des Typ Datetime-Anwendung und int etc ohne sie auf NULL festlegbare ändern.

Danke

Antwort

10

Es gefunden! Ich habe dies in den Global.asax.cs

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 

Die DataAnnotationsModelValidatorProvider Klasse verfügt über eine statische Eigenschaft Datei standardmäßig als „AddImplicitRequiredAttributeForValueTypes“, die erfüllt sein müssen, und es falsch regelte das Problem zu setzen.

(Für jeden, der versucht, die gleiche Art von Dingen zu tun, die diesen Eintrag findet, ich bin zu dokumentieren es here)

+0

Nizza, erhalte ich nur meine Hände auf Daten Anmerkungen und ich denke, das bald hilfreich sein wird. – mare

+0

@mare: Ich habe soeben einen Link zu einem Blog-Eintrag i machen werde, dass beschreibt, ein wenig mehr über das, was ich tat und wie einige andere Standardvalidierungsprobleme loszuwerden (wie numerische Felder eine andere englische Nachricht mit, dass ich möchte lokalisieren!) – jwwishart

1

Ich habe RTM installiert und nicht die AddImplicitRequiredAttributeForValueTypes Eigenschaft haben ...

+0

Sie haben also den Namespace benötigt, um die DataAnnotationsModelValidatorProvider-Klasse im Geltungsbereich (System.Web.Mvc) zu sehen, und Sie können die Eigenschaft nicht sehen? Beachten Sie, dass die Eigenschaft statisch ist. Versuchen Sie daher nicht, eine Instanz von DataAnnotationsModelValidatorProvider zu instanziieren! Hilft das oder ist es etwas anderes? – jwwishart