2009-12-08 10 views
7

Sto tentando di cancellare un modulo Ajax dopo che un elemento è stato aggiunto al database, tuttavia le richieste AjaxOptions OnComplete e OnSuccess vengono chiamate prima che il modulo venga inviato. Come posso ottenerlo in modo che il modulo venga inviato per primo e che venga chiamato il Completamento completo.MVC Ajax.Beginform OnComplete/OnSuccess attivato prima della chiamata del controller

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

che chiama

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

Tuttavia la casella di testo DisplayName viene cancellato prima che il Balue viene inviato al controllore il modulo sottomette. C'è un modo per aggirare questo.

risposta

13

OnComplete = "ClearForm()" deve essere chiamato senza le parentesi, ad esempio OnComplete = "ClearForm". Non posso dire con certezza che risolverebbe comunque il tuo problema.

+0

Ho il sospetto che sia così. Il codice che imposta il callback chiama ClearForm() e utilizza il risultato per assegnarlo al gestore di callback invece di assegnare semplicemente il riferimento alla funzione ClearForm come gestore di callback. – tvanfosson

+0

Stupendo, buonanotte ragazzi, è sempre qualcosa di stupido che ti trattiene. :) – Israfel

Problemi correlati