2009-12-08 5 views
7

Je tente d'effacer un formulaire ajax après qu'un élément a été ajouté à la base de données, mais les AjaxOptions OnComplete et OnSuccess sont appelées avant la soumission du formulaire. Comment puis-je l'obtenir afin que le formulaire est soumis en premier et que le OnComplete est appelé.MVC Ajax.Beginform OnComplete/OnSuccess déclenchés avant l'appel du contrôleur

<% using (Ajax.BeginForm("AddTable", new AjaxOptions 
             { 
              UpdateTargetId = "tables", 
              InsertionMode = InsertionMode.InsertAfter, 
              OnComplete = "ClearForm()" 
             })) 
    {%> 

qui appelle

function ClearForm() { 
     $('#DisplayName').val(''); 
    } 

Cependant, la zone de texte DisplayName est effacé avant la Balue est envoyée au contrôleur la forme soumet. Y a-t-il un moyen de contourner ceci.

Répondre

13

OnComplete = "ClearForm()" doit être appelée sans les parenthèses, c'est-à-dire OnComplete = "ClearForm". Je ne peux pas dire avec certitude que cela réglerait votre problème.

+0

Je suppose que c'est ça. Le code qui configure le rappel appelle ClearForm() et utilise le résultat pour l'affecter au gestionnaire de rappel au lieu d'affecter simplement la référence de fonction à ClearForm en tant que gestionnaire de rappel. – tvanfosson

+0

Superbe, bravo les gars, c'est toujours quelque chose de stupide qui vous retient. :) – Israfel

Questions connexes