2010-09-13 13 views
6

È possibile utilizzare HTMl.RenderAction utilizzando ajax per fornire il parametro?Html.RenderAction using AJAX

Ho un'azione di controllo come questo

[ChildActionOnly] 
Public ActionResult EmployeeData(string id) 
{ 
    Employee employee = new Employee(); 
    //do work to get data 

    Return PartialView(employee); 
} 

La visione parziale è solo un piccolo tavolo con alcuni dati dei dipendenti (nome, indirizzo, ecc)

Ho poi avere una pagina con un menu a discesa elenco dei dipendenti con il campo di dati è l'id necessaria per EmployeeData (string id)

vorrei utilizzare Ajax in modo che quando un impiegato è selezionato da un elenco a discesa verrà visualizzata la vista parziale EmployeeData sotto di essa senza aggiornare la pagina . Poi di nuovo se viene selezionato un altro dipendente.

Anche se non sono sicuro di come farlo, se è possibile.


Come è stato consigliato, ecco quello che ho ora. (per favore non importa che questo non è l'esempio dei dati dei dipendenti che ho menzionato sopra, che i dati non sono pronti nel DB e ho più aree che faranno la stessa cosa quindi ho deciso di lavorare su questo oggi)

ecco il mio il JS a mio avviso

$("#repList").change(function() { 
    var id = $("#repList").val(); 
    $.ajax({ 
     url: '/Reporting/GetSalesTargets/' + id, 
     success: function (result) { 

       $("#partialdiv").html(result); 
     }, 
     error: function() { 
      alert("error"); 
      } 
    }); 
}); 

io sono sempre per l'azione di controllo che restituirà la vista, qui si tratta.

public ActionResult GetSalesTargets(string id) 
{ 
    int month = DateTime.Now.Month; 
    SalesMarketingReportingService mktSrv = new SalesMarketingReportingService(); 

    SalesTargetModel model = mktSrv.GetRSMSalesTargetModel(id, month); 

    return PartialView(model); 
} 

risposta

16

È possibile ma è necessario rimuovere l'attributo [ChildActionOnly]. La diventa una normale azione che restituisce una visione parziale del si potrebbe richiamare utilizzando AJAX:

$.ajax({ 
    url: '/home/employeedata/123', 
    success: function(result) { 
     $('#somedivid').html(result); 
    } 
}); 
+0

Come faccio a visualizzare il parziale, anche se in funzione il successo? – twal

+0

'$ ('# somedivid'). Html (risultato);' dove 'somedivid' è l'id di un elemento DOM che ospiterà il risultato. –

+0

Oh capisco, mi dispiace di aver perso $ ('# somedivid'). Grazie, ci proverò! – twal