根据数据库创建下拉列表

Creating dropdowns according to the database

我的数据库中有 3 个 (x,y,z) 属性有不同的属性。 我创建了一个下拉列表,根据我将在下拉列表中进行的选择,我想将属于此 属性 的属性与另一个下拉列表一起放入数据库中。

(例如我有 x, y,z 属性。X 有 ( a,b) ,y 有 (c,d) ,z 有 ( e,f) 属性。当我选择 x 属性 在下拉列表中我想在下一个下拉列表中看到 a 和 b 属性。如果我选​​择 y 属性,c 和 d 属性将显示在下一个下拉列表中。)

我的代码开始

<form id="CareModal">
    @Html.HiddenFor(model => model.PersonID)
   
    @Html.Hidden("DoesAddictionExist", false)

    @Html.DropDownList("AddictionStatusID", (IEnumerable<SelectListItem>)ViewBag.AddictionStatus, null, new { @class = "form-control", @onchange = "AddictionChanged(this.value)" })

</form>

有人说我应该使用 Ajax 但我不知道如何使用。

无论您希望将第二个下拉列表放在何处:

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

在您的 AddictionChanged 方法中,对控制器进行 ajax 调用。

类似于:

        var json = '{dropdownId: ' + //Value passed into function  + '}';

        $.ajax({
        url: '@Url.Action("// Method", "// Controller")',
        type:'POST',
        data: json,
        success: function(result){
            // Do whatever
                        //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();
        }
    });

所以这会调用控制器(具有参数 dropdownId),将其传递给 id(无论您传递给此函数的是什么)。你,在你的控制器中,会调用一个服务/数据库(不确定你的项目是如何构建的)和 return 这个 ajax/js 函数的列表。 success 中的代码创建标记并将其插入下拉列表中。