2009-07-15 6 views
0

J'ai une page ASP.NET MVC qui a une liste d'articles ...Modèle non rendu des valeurs du modèle après post

//a vague representation 
Model.someValue[0]  Model.someHiddenValue[0] 
Model.someValue[1]  Model.someHiddenValue[1] 
Model.someValue[2]  Model.someHiddenValue[2] 

Tous les champs sont facultatifs, mais ils ont une validation, dont je suis montrer des messages de validation. Le problème est que lorsque je soumets une fois et que je renvoie la vue d'origine au lieu d'une redirection, les champs masqués n'obtiennent pas leur nouvelle valeur, mais leur nouvelle valeur est dans le modèle de vue transmis à la vue.

Je pense que ModelState pourrait remplacer le modèle dans le cadre de la validation. Je sais que je peux faire une redirection et contourner le problème, mais je veux être en mesure d'enregistrer une partie du formulaire et montrer des erreurs de validation pour le reste. S'il n'y a pas d'autres solutions, je vais simplement valider l'ensemble du formulaire et enregistrer uniquement lorsque tous les éléments sont valides.

Répondre

0

Avez-vous essayé cette ?:

var newValue = new ValueProviderResult("value", "value", System.Globalization.CultureInfo.CurrentUICulture); 

ModelState.SetModelValue("someHiddenValue", newValue); 
+0

Je n'ai pas .. J'ai changé ma validation pour être tout ou rien ... en cas de succès, enregistrer puis rediriger ... sinon afficher la vue, ce qui donne les messages de validation. –

2

Si les valeurs sont présentes dans ModelState, il leur montre au lieu des valeurs dans votre modèle, car ils représentent le « dernier » état connu fourni par l'utilisateur.

Vous devez effacer ModelState si vous ne souhaitez pas que l'utilisateur refasse ses modifications.

+0

Merci, je ne comprends pas complètement comment le ModelState fonctionne, mais cela donne suffisamment d'informations pour le contourner si nécessaire. Merci. –

Questions connexes