8
votes

Comment autoriser la valeur null dans la date d'heure nullable requise dans la forme HTML .NET MVC3?

J'ai essayé: xxx pré>

et p> xxx pré>

et toutes les combinaisons avec et sans convertytringtonull code> et Permetxtrings Code>. P>

Vue, j'ai: P>

@Html.EditorFor(m => m.BirthDateFrom)


3 commentaires

Cela ressemble à un contradicto dans la terminaison. Si le champ est requis, pourquoi est-il nullable? Vous recherchez un moyen d'exprimer DateTime.empty? L'exigence est déroutante.


@Rene DateTime.empty serait bien.


Un champ «Nullable» requis »n'a aucun sens, ce qui est probablement pourquoi vous ne pouvez pas l'adapter à la façon dont MVC fonctionne. Cela dit, supprimer l'attribut requis devrait faire l'affaire, non?


3 Réponses :


6
votes

Le fait que le type est nullable implique que la valeur est pas requise. Il ne sert à rien de mettre en œuvre une valeur non nulle ou une valeur null depuis la valeur null ne fournit aucune information de toute façon.

On dirait que le problème que vous rencontrez est multiple signifie de 'null', par ex. "Aucun" vs "vs" inconnu ". Malheureusement, le concept .NET de NULL n'inclut pas différents types de null. Le seul moyen de communiquer que cela serait d'utiliser: -

a) valeurs de «sentinelle», par ex. DateTime.Minvalue Communique quelque chose de spécial, et vous êtes sûr que datetime.minvalue ne sera jamais une valeur valide dans votre modèle de domaine.

B) Utilisez des indicateurs externes pour indiquer la signification de la valeur DateTime manquante de la valeur , par ex. bool isany , bool isknown , etc. Ou peut-être une énumération appropriée


0 commentaires

10
votes

Il me semble que vous supprimez simplement le [requis] annotation serait entièrement satisfaire à votre exigence.


0 commentaires

0
votes

Si vous avez affaire à EF, vous pouvez le rendre facultatif de cette façon.

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Entity<SomeObject>().Property(m => m.somefield).IsOptional();            
    base.OnModelCreating(modelBuilder);
}


0 commentaires