Cela me conduit fou. p>
Je continue à obtenir l'exception suivante p>
système.invalidoperationException: le modèle de type 'modèles.expense' n'a pas été mis à jour avec succès. à System.Web.MVC.Controller.UPDATemodel [Tmodel] (modèle TModel, préfixe de chaîne, chaîne [] InclureProperties, chaîne [] exclutPlusterties, IMITIONNIAnAcence`2 ValueProvider) au système.web.mvc.controller.updatemodel [Tmodel] (modèle Tmodel) ATMVC.CONTROLLERS.BASEEXPENSECONTROLLER.EDIT (ID String, Collection FormCollection) Dans C: \ Projects \ Frais.MVC \ Contrôleurs \ BaseExpensecontroller.cs: Ligne 109 P>
Mais je ne peux pas tracer pourquoi il ne met pas à jour, rien à l'exception ne suggère pourquoi il n'a pas mis à jour. P>
Tous les pointeurs? P>
6 Réponses :
examiner le contrôleur.modelstate et rechercher des entrées avec des erreurs> 0. p>
attraper l'exception ou appelez plutôt TryPDaTemodel. TryPDaTemodel ne jettera pas une exception si elle ne peut pas mettre à jour votre modèle, cela reviendra simplement faux. Vous trouverez les détails d'erreur dans la modélisation comme suggéré par Craig. En fait, UpdateTemodel appelle simplement TryupDaTemodel et les lancers si elle renvoie false. P>
Ce n'est pas si intelligent d'ignorer l'erreur. Il vous chassera tout le temps jusqu'à ce que cela vous procure :)
Pour le point de Milan, il est "meilleur" de gérer de faux. Quelque chose comme si (! Tryupdateemodel (modèle)) Vue de retour ("Modifier", modèle). En supposant que vous ayez une validation câblée dans l'interface utilisateur, cela montrera les erreurs.
Il est difficile de dire sans aucun doute sans voir de code, mais à chaque fois que j'ai vu une exception de ce type, 99% du temps qu'il a été associé à la base de données. Pour ne pas dire que la cause première n'est pas quelque part dans le code, mais il est tout à fait possible que vous manquiez quelque chose et essayant de transmettre des données non valides à la base de données. D'autres problèmes à rechercher seraient toute relation de relation qui doit avoir lieu. P>
Je vérifie généralement 3 choses.
si cela échoue toujours, je revenons à; p> qui fonctionne habituellement. P> p>
sur la signalisation Web générée, vérifiez si vous avez un champ masqué, éventuellement identifiant d'une sorte qui ne peut pas être mis à jour. P>
J'ai eu le même problème et que le problème était parce que j'utilise une interface IDALIDATILABLEOBJECT dans le modèle qui était en relation avec une mise à jour. Le problème réel était dans la base de données, puisque le rendement de validation que j'ai des entrées dupliquées pour une colonne unique :) P>
la chose est. Vous devez utiliser UpdateTemodel ou TryPDaTemodel, les deux méthodes mises à jour ModelState.isvalid. Maintenant, il peut parfois être difficile de trouver ce qui provoque une erreur. Regardez le débogueur pour modelstate.errorkeys et vérifiez s'il existe une entrée qui ne devrait pas être là :) p>
acclamations p>
Pouvez-vous publier le code, il est difficile de suivre sans elle.