im essayant d'exclure une propriété requise (mot de passe) afin que le modèle de modèle ne valide pas cette propriété, mais pour une raison quelconque, il validait toujours même lorsque j'essaie de l'exclure.
Contrôleur: P>
[Required] public string Password { get; set; }
7 Réponses :
Peut-être que vous devriez remplacer
TryUpdateModel(user, null, null, new string[] {"Password"});
Thx pour la réponse, mais je pense que mon problème est lié à moi en utilisant le même modèle pour créer et éditer. Je veux que le mot de passe soit requis lors de la création mais pas lors de la modification. La liste blanche / noire n'a apparemment rien à voir avec la modélisation d'être valide: D
Je connais actuellement un problème similaire avec MVC3.
malgré J'ai remarqué que Ainsi, le problème est donc pas avec NB: Cela signifie également que vous n'avez pas besoin de vérifier cela deux fois ... vous pouvez Utilisez ce code: P> [BIND (EXCLUDE = "mot de passe")] code> dans mon action,
modelstate.isvalid code> retourne toujours faux. p>
tryupdateemodel (utilisateur, null, null, nouvelle chaîne [] {"mot de passe"}); code> mise à jour avec succès le modèle; Cependant, retournez de faux. J'ai ensuite découvert (quelque part sur Stackoverflow, excuses de ne pas avoir le lien) que
tryupdateemodel code> renvoie effectivement
modelstate.isvalid code>. P>
tryupdateemodel code>, mais avec
modelstate.isvalid code>. p>
ModelState.Remove("Password");
Je me débats aussi avec ça. Il semble piraté d'effectuer des modèles de modèle.Retirer, quand cela devrait évidemment être exclu. Quelqu'un peut-il expliquer exactement pourquoi le validaton MC3 ignore BIND (exclude =)?
@James: Je suis d'accord, cela semble quelque peu contre-intuitif que TryupDaTemodel exclut les propriétés énumérées dans l'exclutProperty, mais ISVALID n'exclut pas ceux énumérés dans la liaison (exclure) (ou dans l'exclutProperty).
Je pense que j'ai trouvé la réponse: bradwilson.typepad.com/blog/2010/01/...
J'ai eu le succès en utilisant la méthode suivante dans ASP .NET MVC 2
TryUpdateModel<IUserValidateBindable>(user);
i utilisé avec succès [BIND (exclude = "Propriété")] code> et
modelstate.remove ("propriété") code> ensemble, et cela a fonctionné comme charme. p>
On dirait que je répondais trop tard, mais je suis également confronté au même problème. P>
Vérifiez votre donc dans ce cas J'espère que cela résolve la question de quelqu'un :) p> ModelState.Keys Code> Collection. Les clés peuvent être sous la forme de
ModelObjectName.Password code> et idem pour le reste des propriétés du modèle. P>
modelstate.remove ("mot de passe") code> ne fonctionnera pas. Vous devriez essayer
modelstate.remove ("modèleObjectName.password") code> p>
Vous pouvez utiliser une méthode d'extension, comme: Appelez simplement: p>
Dans mon cas, je suis confronté à une erreur sur modelstate.isvalid avec supprimer qu'il ne fonctionne pas pour moi dans webapi asp.net mvc puis je suive l'erreur p>
Puis j'ajouterai le modèle modelstate.remove ("model.description"); code> que j'ai défini le modèle en tant que paramètre puis j'ai utilisé le nom du paramètre, puis modélistate fonctionne comme ci-dessous: P>