So ermöglichen Sie einen null-Wert in der erforderlichen nullable DateTime in .NET MVC3, HTML form?
Habe ich versucht:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}", ConvertEmptyStringToNull = true)]
[Required(AllowEmptyStrings = true)]
public DateTime? BirthDateFrom { get; set; }
und
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[Required]
public DateTime? BirthDateFrom { get; set; }
und alle Kombinationen mit und ohne ConvertEmptyStringToNull
und AllowEmptyStrings
.
In Aussicht, die ich habe:
@Html.EditorFor(m => m.BirthDateFrom)
Kann ich senden Sie das Formular mit gültigen Datum, aber mit einem leeren string in das Feld, es geht nur rot und das Formular kann nicht gesendet werden.
Gewusst wie: zulassen von HTML-Formular-Vorlage, die mit null oder leere Zeichenfolge-Wert in den geforderten nullable DateTime?
- Es klingt wie ein contradictio in terminis. Wenn das Feld Erforderlich ist, warum ist es null-Werte zulässt? Sind Sie auf der Suche nach einem Weg, um auszudrücken, DateTime.Leer? Die Anforderung ist verwirrend.
- DateTime.Leere wäre schön.
- Ein "erforderlich nullable" - Feld macht keinen Sinn, das ist wahrscheinlich, warum Sie passen nicht in, wie MVC funktioniert. Das heißt, entfernen Sie das required-Attribut sollte den trick tun, Nein?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Scheint es mir, dass ein einfaches löschen der
[Required]
Anmerkung ganz würde Ihre Anforderungen erfüllen.Die Tatsache, dass der Typ null-Werte zulässt, impliziert, dass der Wert nicht erforderlich. Es gibt keinen Punkt bei der Durchsetzung der entweder ein nicht-null-Wert oder einen null-Wert, da der null-Wert enthält nicht alle Informationen, sowieso.
Es klingt wie das problem, das Sie haben mehrere Bedeutungen von 'null', z.B. 'kein' vs. 'alle' vs 'unbekannt'. Leider ist die .NET-Konzept der null nicht enthalten unterschiedliche Arten null. Die einzige Art, dies zu kommunizieren, wäre entweder:-
a) "sentinal" Werte, z.B.
DateTime.MinValue
kommuniziert etwas besonderes, und Sie sind sicher, dassDateTime.MinValue
nie einen gültigen Wert in Ihrem domain-Modell.b) die Verwendung von externen flags, um anzugeben, die Bedeutung der fehlenden
DateTime
Wert, z.B.bool isAny
,bool isUnknown
usw. oder vielleicht eine entsprechende enum -Wenn man sich mit EF, könnte man es optional diese Weise.