2010-11-22 5 views
0

Ma page accepte un viewmodel sur HttpGet. Lorsque je soumets le formulaire ma méthode décorée HttpPost se lie à ce modèle et tout est dandy ... je peux utiliser les données du modèle pour enregistrer.viewmodel après la publication

Mon problème est le suivant: Toutes les valeurs du modèle d'origine ne sont pas transmises à la publication, uniquement les champs de formulaire.

est-il un moyen de passer le modèle original à la méthode post, et la mise à jour uniquement les propriétés qui ont été mis à jour par la forme?

Je sais que je peux utiliser des champs cachés pour ce faire, mais le modèle de vue est complexe et des classes a imbriqué, donc la plaquant tout sera une douleur. puis-je atteindre cet objectif d'une manière plus facile

Thanx

Répondre

1

Seules les valeurs qui font partie du html Form bondira retour sur le poteau. Si vous avez besoin de toutes les valeurs du modèle original

  • vous pouvez les inclure en tant que champs cachés lorsque vous faites le Get qui sera lié au modèle lors de la publication; ou
  • en utilisant l'ID de modèle (que je suppose est présent) faire un appel DB pour obtenir les champs pertinents et réhydrater votre objet.
1

Vous pouvez utiliser JavascriptSerializer pour sérialiser d'abord la machine virtuelle, puis l'enregistrer dans un champ masqué. Vous pouvez ensuite créer à nouveau le ViewModel en désérialisant le champ, puis appliquer les valeurs validées à partir de la chaîne dans le champ masqué.

Si vous vous connectez à la machine virtuelle, vous pouvez d'abord la désérialiser dans son état d'origine, puis utiliser la méthode TryUpdate du contrôleur pour remplacer ces valeurs par les valeurs affichées.

Questions connexes