我创建了两个下拉列表,我的目标是使它们级联,即第二个下拉列表依赖于第一个下拉列表。原因是我的数据库的布局如下:
****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不同。因此,当用户单击第一个下拉列表时,他们将看到 Honda、Acura、Toyota......但如果他们选择 Honda,则第二个下拉列表将显示 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
<label for= "Car_Names"></label>
<%= Html.DropDownList("Car_Name" )%>
<label for= "Application_Names"></label>
<%= Html.DropDownList("Car_drive")%>
<input type = "submit" value ="Update" />
<% using(Html.BeginForm("Home", "Home")) { %>
<%}%>
我已经阅读了很多教程,但没有一个真正接近我的问题。我在MVC Awesome这个项目上实现的很接近,但是我一直收到一个错误,称可选择项目缺少引用。希望能得到关于如何实现它的任何帮助。
更新 我已将此添加到我的控制器中。
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);
}
现在需要一些帮助来编写脚本,从控制器获取这些信息。
<script type = "text/javascript">
$('#Car_Names').change(function(){
var selectedName = $(this).val();
$getJson('@Url.Action("