Nous souhaitons effectuer des calculs sur certaines valeurs dans une vue ... donc lorsque l'utilisateur entre une valeur dans une entrée ... nous voulons revenir au serveur. ..effectuer les calculs et "rafraîchir" la vue avec les nouvelles valeurs ... Avec le code tel qu'il est maintenant, il entre dans le bon (... ou du moins celui que je lui demande) action du contrôleur, effectue correctement le calculs et renvoie la ViewData mise à jour à la vue. Lorsque je fais un pas à travers la boucle qui construit le html pour la vue, le ViewData a les valeurs mises à jour, mais quand la vue est affichée sur le navigateur, les valeurs ont pas changé ...Affichage n'affiche pas les valeurs mises à jour asp.net mvc
Voici le javascript
$('input.changeValue').change(function() {
$('body').css('cursor', 'wait');
var changedAmt = this.value;
var frmUpdate = $('form#frmUpdate').serializeArray();
fooSoldObj = new Object();
fooSoldObj.name = 'fooSoldAmt';
fooSoldObj.value = changedAmt;
frmUpdate[frmUpdate.length] = fooSoldObj;
$.ajax(
{
type: $('form#frmUpdate')[0].method,
url: $('form#frmUpdate')[0].action,
data: frmUpdate,
dataType: 'html',
error: function(error) {
alert('frmUpdate error' + error);
}
}
);
setTimeout(function() {
$('body').css('cursor', 'default');
}, 0);
});
Voici ce que le code HTML pour la forme frmUpdate ressemble
<form action="/Forecast/Update" id="frmUpdate" method="post" name="frmUpdate">
<span>
<input id="HiddenForecastID" name="HiddenForecastID" type="hidden" value="XXX" />
<input id="HiddenForecastYear" name="HiddenForecastYear" type="hidden" value="2009" />
<input id="HiddenForecastMonth" name="HiddenForecastMonth" type="hidden" value="3" />
</span>
</form>
maintenant juste pour compliquer les choses plus loin, les données qui ne sont pas correctement est affiche sous une forme différente sur la vue. La raison (bonne ou mauvaise) que j'ai deux formes est que l'autre forme sur la vue déclenche une routine de sauvegarde.
est ici la partie pertinente de l'action du contrôleur
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(FormCollection frmUpdate)
{
//go off and do some stuff...this part works as the ViewData
//is correct....meaning it has the updated values that
//we want to see displayed in the view
return View("MyView", ViewData[someData]);
}
Je pense que peut-être la raison pour laquelle il ne fonctionne pas est que je suis mise à jour d'un formulaire, puis demander au moteur de vue MVC mettre à jour/actualiser la autre forme (mais gardez à l'esprit que lorsque je parcours la boucle sur la vue qui construit la page, les données sont mises à jour mais pas la page dans le navigateur) ... Comment puis-je faire afficher le code html correct?
/*****************************************
Ajouté le code suivant juste pour tester RedirectToAction
l'appel ajax NE FAIT PAS erreur sur la substance Voir ci-dessus retour (« blah »)
******************** **************************/
PS Juste essayé RedirectToAction dans le contrôleur comme celui-ci
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Update(FormCollection frmUpdate)
{
//go off and do some stuff...this part works as the ViewData
//is correct....meaning it has the updated values that
//we want to see displayed in the view
return RedirectToAction("MyView", new RouteValueDictionary(new { controller = "Forecast", action = "MyView", addMonth = monthAdd }));
}
mais les erreurs d'appel ajax avec une erreur 500
Merci,
Greg
Merci pour ça ... j'essaierai certainement ça ... ça a du sens – w4ik