2012-04-05 4 views
1

ich das folgende Attribut zu erstellen:Datatype zeigt die falsche Botschaft

public class SpecificDataTypeAttribute : DataTypeAttribute 
{ 
    public SpecificDataType(DataType dataType, string field) 
     : base(dataType) 
    { 
     this.ErrorMessage = string.Format("{0} {1}", field, Messages.SpecificDataTypeAttribute); 
    } 
} 

Und verwenden wie:

[SpecificDataType(DataType.DateTime, "Initial date")] 
public DateTime? InitialDate { get; set; } 

die Botschaft also, die in Messages.SpecificDataTypeAttribute ist "is in a incorrect format." ist. Wenn ich ein falsches Datum in InitialDate eingab, erhielt ich den Standardfehler: "The value '12' is not valid for InitialDate.". Warum? Ich habe den Breakpoint gesetzt und der Code ruft den SpecificDataType ctor auf.

+0

Ich würde vermuten, dass es ist, weil 'DateTime?' In der Tat 'Nullable ' und nicht einfach alt 'DateTime' ist. Sehen Sie, ob es funktioniert, wenn Sie das Anfangsdatum als public DateTime InitialDate {get; set;} definieren. –

+0

Nichts wurde geändert. Hält mit demselben Fehler. –

+0

Ah, ich habe deine Frage nicht wirklich mit Verständnis gelesen :) Mein vorheriger Kommentar kann zerkratzt werden. Wie auch immer, das Beste, was ich jetzt habe, ist eine düstere Theorie und keine Ahnung, wie man das Problem umgehen kann. Also überlasse ich das Thema Leuten, die schlauer sind als ich. :) –

Antwort

1

Sie gehen in die falsche Richtung - in asp.net mvc, DataTypeAttribute definiert keine Validierungsregeln. Es ist mehr oder weniger wie UIHintAttribute - hilft zu spezifizieren, welche Vorlage beim Rendern von Eigenschaften in den Bearbeitungs- oder Anzeigemodi verwendet werden soll.

einen Blick auf this answer Nehmen Sie zum Anpassen von Überprüfungsmeldungen für Systemtypen für PropertyValueInvalid formatiert ist, mit {0} ersetzt durch ungültigen Wert, und {1} mit Eigenschaftsnamen

Der Wert zu lernen. So können Sie es als

{1} is in invalid format

+0

Auf diese Weise ändere ich die Standardmeldung. Aber wie kann ich den Feldnamen in die Nachricht einfügen? –

+0

@ ViniciusOttoni werfen Sie einen Blick auf Update – archil

+0

Ich habe ein Problem. In VS funktioniert gut, aber wenn ich das Projekt in der Testmaschine veröffentliche, zeigt es die Standardnachricht an. –