La question est très simple:
Dites que vous avez un modèle appelé personne p> dans l'action Création du contrôleur p> Si vous l'exécutez, P> Je trouve la raison de ce problème. strong> p> Si vous modifiez la fonction à p> Cela éliminera l'erreur "dangereuse" potentielle ". P> mais mon problème strong> est que pour ma demande, je dois utiliser le paramètre secondaire Collection FormCollection forte> Dans la méthode Créer une action, car je dois utiliser d'autres valeurs de contrôle et une autre variable de serveur pour affecter une valeur calculée à la propriété Si un expert de ASP.NET MVC3 J'ai rencontré le même problème que moi et trouvé une solution, merci de bien vouloir-moi savoir. p> p>
3 Réponses :
Avez-vous essayé
[lier ( exclure strong> = "compliquévalue")] em> p> blockQuote>
: p>
xxx pré> ? p>
avec ce qu'il vous permet d'exclure le réglage
compliquéValue forte> sur le formulaire et soumettez toujours l'objet sous forme de classe forte>. p> espère que cela aide p> p>
En fait, cela exclut la propriété O.comPliquévalue, mais il reste en formatcollection afin que l'erreur soit toujours déclenchée.
Pourrais-je suggérer d'utiliser un classeur de modèle personnalisé au lieu de tirer les données complexes d'un formulaire. Scott Hanselman a un Blog Poste sur la création d'un classeur de modèle personnalisé qui servirait de bon modèle . Dans son poste, il met en place un DateTimeLodelBinder qui permet de définir une propriété DateTime soit par une seule entrée contenant la date ou une paire d'entrées contenant une date et une heure. P>
Ce forum sur ce lien traite de cette question en longueur et donne quelques solutions de contournement.
http://forums.asp.net/p/1621677/4161637.aspx p>
Voici une solution de ce fil qui peut ne pas fonctionner ou ne pas fonctionner pour vous: P>
public virtual ActionResult Edit(int id) { return View(this.repository.GetById(id)); } [HttpPost] public virtual ActionResult Edit(int id, int? bogusID) { var d = repository.GetById(id); if (TryUpdateModel(d)) { repository.Save(); return RedirectToAction("Index"); } return View(); }
La réponse nous a aidés à résoudre le problème. Merci beaucoup!
L'exemple du Top a fonctionné pour moi, sauf que je devais supprimer le supplémentaire code> à partir de
demande.unvalidated (). Formulaire CODE> Pour avoir
Demande.Unvalidated.forme < / code>
Au lieu du faux paramètre, faites simplement un nom de fonction différent (E.G. Update (ID INT)) et marquez-le avec Attribut ActionName ("Modifier").