ASP.NET mvc 2 - Bindung eines Geburtsdatums mit Drop-Downs

9

Wie würden Sie in ASP.NET MVC 2 eine Ansichtsmodelleigenschaft binden, bei der es sich um eine DateTime-Datei handelt, in der die Anwendung 3 Dropdownlisten zur Auswahl von Monat, Tag und Jahr haben muss? Blogpost über verbindliche Daten vor einiger Zeit, und das scheint für einen so einfachen Fall völlig zu verworren. Sicherlich gibt es einen saubereren / besseren Weg, es zu tun?

Welche Lösung ich auch immer verwenden möchte, ich möchte die integrierte Validierung mithilfe der DataAnnotations-Elemente beibehalten. Außerdem möchte ich mithilfe eines Validierungsattributs einen Min / Max-Datumsbereich angeben können.

Mein erster Gedanke war ein einfaches benutzerdefiniertes Modell wie folgt:

%Vor%

Dann habe ich versucht, ein DateTimeAttribute zu erstellen, um die Validierung durchzuführen, aber es gab Schwierigkeiten beim Festlegen eines Datumsbereichs in der Attributdeklaration, da Attributparametertypen begrenzt sind und DateTime nicht zu den zulässigen Typen gehört.

Ich habe schließlich eine IDateRangeProvider-Schnittstelle und eine Implementierung erstellt, die für Geburtsdaten wie folgt spezifisch ist:

%Vor%

Dadurch konnte ich eine DateTime-Eigenschaft für mein Ansichtsmodell verwenden und den gesamten Build in guter Qualität beibehalten ...

%Vor%

Aber wirklich riecht die ganze Lösung nach Overengineering und Überdenken. Gibt es keinen besseren Weg?

    
Chris 07.09.2010, 15:48
quelle

3 Antworten

1
  

create seprate 3 Dropdownliste und füge hinzu   erforderliches Validierungsattribut für   sie.

     

und verwenden Sie BdateList, BMonthList zu   bevölker deine DropDownList

%Vor%
  

und in der Post-Methode können Sie zuweisen   Benutzer hat Werte für Model BirthDate

ausgewählt

BirthDate.Date.AddDays (BirthDateDate -1) .AddMonths (BirthDateMonth)

    
swapneel 30.03.2011 22:47
quelle
0

eine Idee für dich

habe die Klasse birthDate

%Vor%

jetzt in deiner Entität: setze dein Geburtsdatum auf privat

und fügen Sie die Geburtsdatumselemente in die Klasse ein nachdem du den Gegenstand für jedes Teil zusammen gehandhabt hast. und bearbeiten Sie dies zu einem Datum:)

    
cpoDesign 30.04.2011 02:36
quelle
0

Sie können einen benutzerdefinierten Typ für Geburtstag haben, der Eigenschaften wie

haben wird %Vor%

Erstellen Sie nun einen benutzerdefinierten Validator alias DayShouldBeValid, um nach dem Monat und dem Jahr zu suchen, der Tag ist gültig oder nicht.

Nicht jeder Teil eines Datums hat Ihre eigene Kontrolle.

    
bijayk 13.11.2012 17:35
quelle

Tags und Links