2010-04-09 5 views
12

Come posso passare i parametri alla funzione della classe AjaxOptions in ASP.NET MVC?Come posso passare i parametri alla funzione OnSuccess della classe AjaxOptions in ASP.NET MVC?

Ecco il mio codice ma non funziona:

<%= Ajax.ActionLink("Delete", 
        "Delete", 
        "MyController", 
        New With {.id = record.ID}, 
        New AjaxOptions With 
        { 
         .Confirm = "Delete record?", 
         .HttpMethod = "Delete", 
         .OnSuccess = "updateCount('parameter')" 
        }) 
%> 

UPDATE

L'impostazione della proprietà OnSuccess-(function(){updateCount('parameter');}) Ha risolto il problema:

<%= Ajax.ActionLink("Delete", 
        "Delete", 
        "MyController", 
        New With {.id = record.ID}, 
        New AjaxOptions With 
        { 
         .Confirm = "Delete record?", 
         .HttpMethod = "Delete", 
         .OnSuccess = "(function(){updateCount('parameter');})" 
        }) 
%> 

risposta

10

Si dovrebbe essere in grado di usare un selettore jQuery popolare un valore da un campo nella pagina:

<%= Ajax.ActionLink("Delete", 
        "Delete", 
        "MyController", 
        New With {.id = record.ID}, 
        New AjaxOptions With 
        { 
         .Confirm = "Delete record?", 
         .HttpMethod = "Delete", 
         .OnSuccess = "updateCount($('#SomeField).val()))" 
        }) 
%> 

anche dare un'occhiata qui: Can I pass a parameter with the OnSuccess event in a Ajax.ActionLink

+0

Grazie mille per avermi segnalato questo link. Avevo già guardato quel post, ma ho trascurato una delle risposte. –

+0

@Dave, come posso passare l'ancora generata alla funzione riuscita? Ho provato "questo", ma non ha funzionato. – Shimmy

1

Ecco un esempio MVC4. OnBegin, OnSuccess, OnComplete e OnFailure -functions vengono utilizzate per abilitare/disabilitare le mie animazioni Ajax. Ogni funzione passa un oggetto ID come parametro per permettermi di riutilizzare le mie funzioni js per tutte le mie sezioni ajax. ajaxOnbegin() mostra una gif e ajaxOnsuccess lo nasconde di nuovo.

<script> 
@*Ajax Animation*@ 
    $(document).ready(function() { 
     $("#ajaxLoadingGif").hide(); 
    }); 
    function ajaxOnbegin(id) { 
     //show animated gif 
     $(id).show(); 
    } 
    function ajaxOnsuccess(id) { 
     //disable animated gif 
     $(id).hide(); 
    } 
    function ajaxOnfailure(id) { 
     //disbale animated gif 
     $(id).hide(); 
    } 
    function ajaxOncomplete(id) { 
     //disable animated gif 
     $(id).hide(); 
    } 


    </script> 

@Ajax.ActionLink(linkText: " Hi", // <-- Text to display 
        actionName: "getJobCards", // <-- Action Method Name 
        routeValues: new { searchString = ViewBag.searchString}, 
        ajaxOptions: new AjaxOptions{ 
           "#itemId", // <-- DOM element ID to update 
           InsertionMode = InsertionMode.Replace, 
           HttpMethod = "GET", // <-- HTTP method 
           OnBegin = "ajaxOnbegin('#ajaxLoadingGif')", 
              //="ajaxOnbegin" without parameters 
           OnSuccess = "ajaxOnsuccess('#ajaxLoadingGif')", 
           OnComplete = "ajaxOncomplete('#ajaxLoadingGif')", 
           OnFailure = "ajaxOnfailure('#ajaxLoadingGif')" 
           }, 
           htmlAttributes: new { id = ViewBag.ajaxId } 

       )