2010-03-12 9 views
6

Ho un'applicazione C# MVC che sta compilando un menu a discesa in base a una data selezionata. Una volta selezionata la data, la invio a un'azione tramite AJAX/jQuery. L'azione ottiene un elenco di elementi da restituire per quella data.Ottenimento dell'elenco di selezione in MVC utilizzando AJAX/jQuery

Qui è dove il mio problema è. L'ho fatto in precedenza, in cui eseguo il rendering di una vista parziale dall'azione e la passerò alla SelectList come modello. Comunque, voglio solo farlo in linea nella vista originale, quindi spero che ci sia un modo per restituire la SelectList e da lì fare qualche magico Javascript/JQuery per metterlo in un menu a discesa.

Qualcuno l'ha mai fatto prima? In tal caso, cosa devo concludere sul client dopo aver chiamato load() per restituire SelectList?

ho fatto qualcosa di simile in precedenza, quando ero solo restituendo una stringa o di altro valore per essere reso come testo direttamente:

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

Ma io non sono sicuro di come intercettare i dati e morph nella chiamata a Html.DropDown() o equivalente.

Qualche idea?

Grazie,

Chris

risposta

17

Supponendo di avere un azione di controllo che andranno ad alimentare i dati per la discesa:

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

E secondo lei:

$.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

Bella, quello ha fatto! Grazie. – Chris

Problemi correlati