Le premier envoi fonctionne comme prévu, mais la prochaine fois qu'il est entièrement publié. J'utilise le plugin jQuery.form, en particulier l'appel .ajaxSubmit(options)
pour envoyer le formulaire. Il y a quelques niveaux de divs wrapper, mais je débogue le bouton.click lie et je n'arrive pas à comprendre pourquoi la seconde fois, même avec les mêmes variables, il fait un post complet et ma vue partielle est retournée sur un tout nouveau page. Ici, buttonid
et screenid
sont les mêmes sur les deux postes. J'indique cela parce qu'ils sont calculés selon une convention de nommage comme <name>Outer
(emballage), <name>
(cible de mise à jour), et <name>Form
(formulaire soumis)Ajax soumettre fait un post complet après le premier envoi
$('.formButton').click(function() {
var buttonid = $(this).attr('id');
var screenid = $('#' + buttonid).closest('div:not(.CSRForm)').attr('id').replace('Outer', '');
//appends a hidden element so I know which button was pressed when posted
$('#' + screenid + 'Form').append('<input type="hidden" name="submitButton" value="' + buttonid.replace(screenid, '') + '" />');
$('#' + screenid + 'Form').submit();
});
esprit les .formButton
éléments sont pas à l'intérieur du forme, c'est pourquoi j'ai dû lier l'événement de soumission en tant que tel. Mon vue partielle renvoie uniquement la forme et non sur les boutons (ils sont dynamiques)
ici est le .ajaxSubmit:
$('.CSRForm').submit(function() {
var needsValidation = "yes";
if (needsValidation) {
$(this).ajaxSubmit({
target: '#AccountSetup',
replaceTarget: false,
success: StepCallWithForm //to check whether the response is valid for redirecting
});
return false;
}
});
et mon action MVC si elle est pertinente:
public ActionResult AccountSetup(AccountSetupViewModel vm, string submitButton)
{
if (!ModelState.IsValid)
{
return PartialView(vm);
}
else
{
return Content(submitButton + ",AccountSetup");
}
}
Modifier : Après l'insertion de cette ligne immédiatement à l'intérieur de mon $(function() {
:
$('#AccountSetup').ajaxForm();
J'ai été en mesure d'arrêter la publication complète. Dans Firebug, maintenant je vois ajax postback à /CSR/Home/CSR?
qui est où tout ce truc est pour commencer. C'est comme si le formulaire avait perdu sa propriété d'action. Est-ce que mes événements se croisent d'une manière ou d'une autre?
Je suis surpris que je sois le premier à +1. vivre() rochers – Ulises