由以前的SelectList值确定的SelectList值

时间:2018-11-19 15:46:44

标签: asp.net asp.net-mvc entity-framework

要实现两个selectLists,而第二个依赖于第一个,我需要了解什么? 选择制造商以过滤发动机尺寸。最终将返回carDetails

Basic UML model

public IActionResult Create()
{
      ViewData["MakeId"] = new SelectList(_context.Sport, "MakeId", "MakeName");
      ViewData["EngineId"] = new SelectList(_context.Venue, "EngineId", "EngineName");

      return View();
}

我已经研究了“ where”功能,但是看不到如何使其在这种情况下起作用。

该视图当前使用“ cshtml”(剃刀)文件。内容的示例是:

  <div class="form-group">
                <label asp-for="MakeId." class="control-label"></label>
                <select asp-for="MakeId" class="form-control" asp-items="ViewBag.MakeId"></select>
  </div>

1 个答案:

答案 0 :(得分:0)

您可以通过在页面加载时填充一个选择列表来做到这一点。然后,您可以允许用户选择您想要的内容,并在下拉列表上有一个调用javascript函数的onChange()。

您现在可以使用ajax调用来调用控制器,并获取数据以填充第二个下拉列表。

您的下拉列表HTML看起来应该像这样:

            <select class="form-control" data-val="true" id="AN ID" name="A NAME (NOT NEEDED)"></select>

在ajax调用的成功部分中,您可以执行以下操作:

            //Create a markup for a select
            var markup = "<option Value='0'>Select option</option>";

            //Populate the markup
            for (var i = 0; i < result.length; i++) {
                markup += "<option Value=" + result[i].Value + ">" + result[i].Text + "</option>";
            }

            //Populate dropdown with value
            $("#//DROPDOWNLIST ID").html(markup).show();

这将允许您顺序填充下拉列表