2010-09-13 20 views
6

Est-il possible d'utiliser HTMl.RenderAction en utilisant ajax pour fournir le paramètre?Html.RenderAction utilisant AJAX

J'ai une action de contrôleur comme celui-ci

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

    Return PartialView(employee); 
} 

La vue partielle est juste une petite table avec des données des employés (nom, adresse, etc.)

J'ai alors une page avec une liste déroulante Je souhaite utiliser ajax donc lorsqu'un employé est sélectionné dans une liste déroulante, la vue partielle EmployeeData apparaîtra en dessous sans actualiser la page. . Puis à nouveau si un autre employé est sélectionné. Bien que je ne sais pas comment faire cela, si c'est possible.


Comme cela a été recommandé voici ce que j'ai maintenant. (S'il vous plaît ne me dérange pas que ce n'est pas l'exemple de données employé ci-dessus, que les données ne sont pas prêtes dans la base de données et que j'ai plusieurs domaines qui feront la même chose.)

voici mon JS à mon avis

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

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

Je reçois à l'action du contrôleur qui renverra la vue, voici ce.

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

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

    return PartialView(model); 
} 

Répondre

16

Il est possible, mais vous devez supprimer l'attribut [ChildActionOnly]. Il devient une action normale qui renvoie une vue partielle que vous pouvez invoquer en utilisant AJAX:

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

Comment afficher la partie partielle dans la fonction de réussite? – twal

+0

'$ ('# somedivid'). Html (résultat);' où 'somedivid' est l'id d'un élément DOM qui abritera le résultat. –

+0

Oh je vois, je suis désolé j'ai raté le $ ('# somedivid'). Merci je vais essayer ça! – twal