J'ai un modèle configuré à l'aide de LINQ vers des entités et avons un code de travail qui ajoute à la base de données comme prévu. Cependant, je ne peux pas obtenir d'UpdateModel pour travailler lorsque j'utilise .NET 3.5.
System.InvalidOperationException was caught Message=The model of type 'Site.Models.XYZ' could not be updated. Source=System.Web.Mvc StackTrace: at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix, String[] includeProperties, String[] excludeProperties, IValueProvider valueProvider) at System.Web.Mvc.Controller.UpdateModel[TModel](TModel model, String prefix) at Site.Controllers.XYZController.Edit(Site.Models.XYZ xyz) in D:***.cs:line 81 InnerException:
4 Réponses :
Ce que je fais dans mes projets MVC est saisir le code source pour le défautModelbinder de CodePlex et collez-la Dans une nouvelle classe dans votre projet, comme MyDefaultModelBinder. Ensuite, enregistrez ce liant modèle dans votre global.aSax: ceci vous permet de définir un point d'arrêt dans la méthode BindModel, et vous pouvez déterminer pourquoi il n'est pas capable de se lier. P> < / p>
Cela n'a pas fonctionné, quelques erreurs lors de la compilation. "'' System.web.mvc.dictionaryHelPers'S 'est inaccessible en raison de son niveau de protection" et "" system.web.mvc.ivalueprovider "ne contient pas de définition pour" trygetvalue "et aucune méthode d'extension" trygetvalue "acceptant un premier argument de type 'system.web.mvc.ivalueprovider' pourrait être trouvé "
Oui, maintenant que vous le mentionnez, je pense que je devais inclure d'autres classes, comme Typehelperers et Typedescriptorhelper. Tout ce dont vous avez besoin devrait être dans le projet CODEPLEX, cependant.
réussi à résoudre le problème. Peut être fait de deux manières: ou p> db.ApplyPropertyChanges(original.EntityKey.EntitySetName, xyz)
Je viens d'avoir le même problème et que vous utilisez TryUpdate, vous pouvez identifier les biens (s) des biens (s) qui n'a pas été défini pour aider à identifier le problème.
Le liant modèle jette une exception lorsqu'il ne parvient pas à mettre à jour une propriété sur le modèle. Si vous attendez des exceptions, comme dans les cas de mauvaises données, utilisez TryupDaTemodel comme celui-ci ne jette pas une exception.
Utiliser Les deux différence entre tryupdaTemodel () code> au lieu de
updateModel () code> fonction pour résoudre ce p>
updateModel () code> et
tryupdateemodel () code> La fonction permet de mettre à jour le modèle avec les valeurs de formulaire et effectuer des validations. P>
updateemodel () code> strud> &
tryupdateemodel () code> p> p> p> P>
updateemodel () code> strong> jette une exception si la validation échoue, où
tryupdateemodel () le code> strong> ne jettera jamais un Exception, il retourne vrai ou faux p>
blockQuote>
Vous pouvez faire comme cette méthode (cela fonctionne pour moi) P>
exemple; p>
Vide interne protégé UpdateModel
string [] InclureProperty = {xyz.id.tostring (), xyz.name};
UpdateModel (Uye, includeproperty);
code>