Comment permettre à la valeur null dans des nullable DateTime .NET MVC3 formulaire HTML?
J'ai essayé:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}", ConvertEmptyStringToNull = true)]
[Required(AllowEmptyStrings = true)]
public DateTime? BirthDateFrom { get; set; }
et
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[Required]
public DateTime? BirthDateFrom { get; set; }
et toutes les combinaisons avec et sans ConvertEmptyStringToNull
et AllowEmptyStrings
.
En vue, j'ai:
@Html.EditorFor(m => m.BirthDateFrom)
Je peux soumettre le formulaire avec une date valide, mais avec une chaîne vide dans ce domaine, il est rouge et la forme ne peut être soumis.
Comment permettre la soumission d'un formulaire HTML avec la valeur null ou une chaîne vide, la valeur requise nullable DateTime?
Il sonne comme une contradictio in terminis. Si le champ est Obligatoire pourquoi est-il nullable? Vous êtes à la recherche d'un moyen d'exprimer DateTime.Est-il vide? L'exigence est source de confusion.
DateTime.Vide, ce serait bien.
Une "obligation nullable" champ n'a pas de sens, ce qui est probablement la raison pour laquelle vous ne pouvez pas le tenir dans la façon dont MVC œuvres. Cela dit, en supprimant l'attribut obligatoire devrait faire l'affaire, non?
DateTime.Vide, ce serait bien.
Une "obligation nullable" champ n'a pas de sens, ce qui est probablement la raison pour laquelle vous ne pouvez pas le tenir dans la façon dont MVC œuvres. Cela dit, en supprimant l'attribut obligatoire devrait faire l'affaire, non?
OriginalL'auteur Hogan | 2011-03-13
Vous devez vous connecter pour publier un commentaire.
Il me semble qu'il suffit de retirer le
[Required]
annotation entièrement adaptés à vos besoins.OriginalL'auteur Mike Manard
Le fait que le type est nullable implique que la valeur est pas nécessaire. Il n'y a pas de point dans l'application, soit une valeur non null ou une valeur nulle puisque la valeur null n'est pas de fournir tous les renseignements de toute façon.
Il semble que le problème que vous rencontrez est de plusieurs significations de 'null', par exemple 'none' vs 'tout' vs 'inconnu'. Malheureusement, le .NET concept de nul de ne pas inclure les différentes types de null. La seule façon de communiquer ce qui serait d'utiliser soit:-
a) 'sentinelle' valeurs, par exemple
DateTime.MinValue
communique quelque chose de spécial, et vous êtes sûr queDateTime.MinValue
ne sera jamais une valeur valide dans votre modèle de domaine.b) utiliser des indicateurs pour indiquer le sens de l'manquant
DateTime
valeur, par exemplebool isAny
,bool isUnknown
, etc. ou peut-être approprié enumOriginalL'auteur Adam Ralph
Si vous faites affaire avec EF, vous pouvez le rendre facultatif de cette façon.
OriginalL'auteur Sakthivel