ASP.NET MVC champ facultatif être traités comme requis
J'ai ce champ pour une raison quelconque, quand je clique sur submit, reçoit un message de validation que le champ est obligatoire.
[DisplayName("Total Budget:")]
public double Budget { get; set; }
@Html.EditorFor(model => model.account.Budget)
@Html.ValidationMessageFor(model => model.account.Budget)
public class Account
{
[DisplayName("Total Budget:")]
public double Budget { get; set; } //dropdown
}
- Quel est votre balisage ressembler.
- Mise à jour de l'OP
- ce qui ne compte ressembler?
- Édité le OP
- désolé, je n'ai pas été clair, pouvez-vous montrer le modèle aussi s'il vous plaît
- C'est le modèle
- Double Possible de Unrequired propriété ne cesse de données-val-requis attribut
Vous devez vous connecter pour publier un commentaire.
Le haut-DefaultModelBinder en MVC exécuter requis et le type de données de validation sur la valeur de type int, DateTime, virgule, etc. Ce sera le cas même si vous n'avez pas spécifier explicitement la validation à l'aide de quelque chose comme
[Required]
.Dans le but de rendre cette option, vous devez définir comme nullable:
double
est un type valeur. Les types de valeurs de toujours contenir une valeur, même si vous n'avez pas défini un. Cette valeur est la valeur par défaut de ce genre (dans ce cas0.0
). Tous les types de valeur sont traités comme requis par le cadre. La seule façon de contourner cela est de créer un modèle personnalisé classeur, mais cela n'empêchera pas le modèle contenant la valeur par défaut (parce qu'il n'y a aucun moyen de dire que ce n'était pas entré).Donc, même si vous créez un classeur personnalisé, lorsque vous traitez votre modèle, vous ne serez pas en mesure de dire si quelqu'un est entré
0
ou si c'était juste la valeur par défaut.Ainsi, la seule solution est de changer votre point de vue modèle à utiliser un type nullable, comme
Nullable<double>
(abréviation estdouble?
).Vous avez probablement modifier le Budget d'un
double
àdouble?
Vous pouvez probablement essayer d'ajouter cet attribut pour le contrôleur
BindExclude([Bind(Exclude="Budget")])
ainsiVous devez ajouter la ligne suivante dans la section application_start (à l'échelle mondiale.asax)
Source: Unrequired propriété ne cesse de données-val-attribut obligatoire
Utilisez [NotMapped] annotation , ce qui supprime les exigences relatives à la validation dans le flux, vous aussi utiliser ses propres attributs d'affichage
Utilisation Nullable ou ? après le nom de l'attribut.