级联下拉列表MVC 3 C#

我创建了两个下拉列表,我想要做的是让它们级联。 这样第二个依赖于第一个。 原因是因为我的数据库是这样布局的

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

正如你所看到的,我有两个相同的Car_Names,但Car_drive是不同的。 因此,当用户点击第一个下拉列表时,他们将看到本田,讴歌,丰田……但如果他们选择本田,则第二个下拉框将显示2wheeldrive和4wheeldrive。

我的控制器看起来像这样:

  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()); } 

我的观点看起来像这样

  Choose an Car        

我已阅读了这么多教程,但没有什么真正接近。 我接近MVC Awesome的东西,但我一直收到错误,说SelectableItem缺少引用。 任何有关实现此function的帮助都会很棒。

更新我已将此添加到我的控制器

  public ActionResult CarNameChange(string 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); } 

现在需要一些帮助编写脚本以从控制器获取此信息。

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

检查: http : //blogs.msdn.com/b/rickandy/archive/2012/01/09/cascasding-dropdownlist-in-asp-net-mvc.aspx和http://msprogrammer.serviciipeweb.ro/2011/ 02/13 / asp-net-mvc-jquery-and-razor-cascading-dropdown-retrieval-partial-views-json-send-objects-handling-errors /你不需要任何其他东西。 这两个项目都有一个下载的示例来检查代码。

问候

编辑:更新后

不要使用ViewData或ViewBag。 制作包含Cars和CarDrive属性的ViewModel,它更清晰,更容易添加新内容。

使用一些客户端jQuery脚本,只要有人更改选择,就会触发Car_Name下拉列表。

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

现在你要做的是,当这个事件被触发时,触发一个值为Car_Name的AJAX请求。

让你的ActionMethod返回一个JsonResult

然后,您可以在客户端捕获该信息,并解析数据以将选择选项插入到下拉列表Car_Drive

这就是你需要做的事情,分解成易于理解的小块。