Liste déroulante en cascade MVC 3 C #

J’ai créé deux listes déroulantes, ce que j’essaie de faire est de les rendre en cascade. Tels que le second dépend du premier. La raison en est que ma firebase database est disposée comme ceci

****Car_iD Car_Name Car_drive** 1 Honda 2 wheel drive 2 Acura 4wheel drive 3 Toyota 2 wheel drive 4 Honda 4wheelDrive 

Comme vous pouvez le voir, j’ai deux Car_Names identiques, mais le Car_drive est différent. Ainsi, lorsque l’utilisateur cliquera sur la première liste déroulante, il verra Honda, Acura, Toyota … mais s’il choisit Honda, le deuxième menu déroulant affichera 2Wheeldrive et 4wheeldrive.

Mon contrôleur ressemble à ceci:

  public ActionResult Home() { ViewData["Car_Name"] = new SelectList(_context.Cars.Select(a => a.Car_Name).Distinct()); ViewData["Car_drive"] = new SelectList(_context.Cars.Select(a => a.Car_drive).Distinct()); } 

Ma vue ressemble à ceci

  Choose an Car        

J’ai lu tellement de tutoriels mais rien ne s’approche vraiment. Je me suis approché de MVC Awesome, mais j’ai continué à avoir des erreurs en disant qu’il manquait une référence à SelectableItem. Toute aide sur la mise en œuvre serait géniale.

mise à jour, j’ai ajouté cela à mon contrôleur

  public ActionResult CarNameChange(ssortingng Car_Name) { var car_drive = from env in _context.Cars where env.Car_Name == Car_Name select car_drive; return Json(ViewData["Car_Drive"] = car_drive); } 

Vous avez maintenant besoin d’aide pour écrire le script afin d’obtenir ces informations du contrôleur.

   $('#Car_Names').change(function(){ var selectedName = $(this).val(); $getJson('@Url.Action(" 

Vérifiez: http://blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx et http://msprogrammer.serviciipeweb.ro/2011/ 02/13 / asp-net-mvc-jquery-and-razor-cascading-dropdown-extraction-partial-views-json-send-objects-traitement-erreurs / et vous n’aurez besoin de rien d’autre. Les deux projets ont une démonstration à télécharger pour inspecter le code.

Cordialement

EDIT: Après votre mise à jour

N’utilisez pas ViewData ou ViewBag. Créer un ViewModel contenant des propriétés pour Cars et CarDrive est plus propre et plus facile à append.

À l’aide de scripts jQuery côté client, Car_Name votre Car_Name déroulante Car_Name déclencher un événement chaque fois que quelqu’un modifie la sélection.

 //Use your DOM identifier here. I don't know what it's called. $('#car_name').change(function() { //Magic here. }); 

Maintenant, ce que vous voulez faire est que, lorsque cet événement est déclenché, déclenchez une requête AJAX avec la valeur Car_Name .

Demandez à votre ActionMethod de renvoyer un JsonResult .

Vous Car_Drive ensuite ces informations côté client et parsingz les données pour insérer des options de sélection dans votre liste déroulante Car_Drive .

C’est ce que vous devez faire, décomposé en petits morceaux simples à suivre.