2010-03-12 6 views
6

J'ai une application C# MVC qui remplit une liste déroulante basée sur une date sélectionnée. Une fois la date sélectionnée, je l'envoie à une action via AJAX/jQuery. L'action obtient une liste d'éléments à retourner pour cette date.Obtenir SelectList à la vue MVC en utilisant AJAX/jQuery

Voici où est mon problème. Je l'ai fait précédemment où je rends une vue partielle de l'action et lui passe la SelectList comme modèle. Cependant, je veux juste le faire en ligne dans la vue originale, donc j'espère qu'il y a un moyen de retourner la SelectList et de faire un peu de Javascript/JQuery magique pour le mettre dans une liste déroulante.

Est-ce que quelqu'un l'a déjà fait auparavant? Si oui, que dois-je faire sur le client après avoir appelé load() pour retourner la SelectList?

Je l'ai fait quelque chose comme ça auparavant, quand je viens de rentrer d'une chaîne ou une autre valeur à rendre sous forme de texte droite:

$("#returnTripRow").load("/Trip.aspx/GetTripsForGivenDate?date=" + escape(selection)); 

Mais je ne sais pas comment intercepter les données et morph dans l'appel Html.DropDown(), ou équivalent.

Des idées?

Merci,

Chris

Répondre

17

Supposons que vous avez une action de contrôleur qui alimenteront les données pour le menu déroulant:

public ActionResult Cars() 
{ 
    return Json(new[] { 
     new { id = "bmw", name = "BMW" }, 
     new { id = "mer", name = "Mercedes" }, 
     new { id = "aud", name = "Audi" } 
    }, JsonRequestBehavior.AllowGet); 
} 

Et à votre avis:

$.getJSON('/home/cars', { }, function(cars) { 
    var list = $('select#cars'); 
    list.find('option').remove(); 
    $(cars).each(function(index, car) { 
     list.append('<option value="' + car.id + '">' + car.name + '</option>'); 
    }); 
}); 
+0

Belle, ça l'a fait! Merci. – Chris

Questions connexes