6
votes

ASP.NET MVC ajoute une validation pour les champs non obligatoires

J'ai une classe modèle "Pays" avec la propriété "CultureID" qui n'est pas marquée comme requis. Une autre classe "CountryviewModel" détient la même propriété "cultured".

Lorsque vous rendant la vue "Créer", j'ai remarqué que des attributs de données de validation ont été ajoutés à la zone de texte "cultureID", bien qu'il n'y ait pas d'annotations de données ajoutées.

J'utilise xxx

Qu'est-ce qui pourrait être la cause d'un tel comportement?

merci


0 commentaires

4 Réponses :


0
votes

Si vous pouvez utiliser des annotations de données, vous devriez consulter ce http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.metadaTatypeattribute.aspx xxx

}

Il vous aide à définir des validations sans modèles de la base de données.


2 commentaires

Son problème ne concerne pas comment définir les besoins sur une propriété, mais comment éviter la validation HTML indésirable qu'il s'exécute. De plus, votre mode de gestion d'attribut est typique des données dynamiques, et non la façon dont MVC fonctionne habituellement


Je pensais que ce sera remplacé les règles de validation, si la classe de métadonnées sera vide



12
votes

Je suppose que votre culture est un int. MVC ajoute automatiquement des balises obligatoires aux types de valeur non nullables.

Pour éteindre cette éteinte Ajouter P>

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false; 


3 commentaires

Déjà ajouté que et toujours le même comportement. Je vais essayer de faire l'inflammable. Merci


Bonne réponse. Il fonctionne pour se débarrasser de la validation requise , mais puisque l'identifiant est un int il ajoute le numéro de données qui empêche toujours la soumission de formulaire lorsque vous essayez de créer. Je pourrais travailler autour de lui en définissant des valeurs par défaut comme 0, mais je ne devrais pas avoir à.


Mon mauvais - cela fonctionne comme la validation semble sauter data-val-numéro pour les entrées cachées



0
votes

Essayez ceci: xxx

si cultureID est INT, il vous donnera également le résultat souhaité ...


1 commentaires

Ceci est un peu d'un kilomége qui évite le problème réel impliqué ici. Voir le Réponse de DSKH pour plus de .



9
votes

Il y a quelques façons de gérer ce fort> -
une). Rendre la propriété comme nullable comme xxx pré>

b). Utilisez la classe de contrôleur ci-dessous - P>

ModelState["Age"].Errors.Clear();


1 commentaires

L'option (b) résout-elle le comportement de validation côté client? Pas de droit, puisque vous nettoyez les erreurs sur le post-colonne?