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?
%Vor%create seprate 3 Dropdownliste und füge hinzu erforderliches Validierungsattribut für sie.
und verwenden Sie BdateList, BMonthList zu bevölker deine DropDownList
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)
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:)
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.
Tags und Links asp.net-mvc-2