【问题标题】:Creating dropdowns according to the database根据数据库创建下拉列表
【发布时间】:2022-01-13 09:10:19
【问题描述】:

我的数据库中有 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,但我不知道该怎么做。

【问题讨论】:

  • 您可以在调用 js 函数的下拉列表中添加 onchange。然后,该 js 函数将调用控制器方法从 db 中获取数据并将其返回给 js 方法。然后,您可以根据这些值填充另一个下拉列表
  • 有道理,但我不知道怎么用代码写出来。

标签: c# ajax asp.net-mvc model-view-controller drop-down-menu


【解决方案1】:

无论您希望将第二个下拉菜单放在哪里:

<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(无论你传递给这个函数的什么)。你,在你的控制器中,会调用一个服务/数据库(不确定你的项目是如何结构的)并将一个列表返回给这个 ajax/js 函数。 success 中的代码创建标记并将其插入到下拉列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多