C# MVC Not updating Html.DropDownListFor

本文关键字:Html DropDownListFor updating Not MVC | 更新日期: 2023-09-27 18:32:13

我需要在我的页面上有 3 个下拉列表。它们将按如下方式工作:

用户必须从第一个下拉列表中选择才能查看第二个下拉列表中的列表。第二个和第三个以相同的方式工作。

索引方法填充第一个下拉列表:

    [HttpGet]
    public ActionResult Index()
    {
        ViewBag.ClientDropdownList = GetClientsDropDown();
        return View();
    }

用户从第一个下拉列表中选择任何项后:

$(function () {
    $('#clientDropdown').change(function () {
        var val = $(this).val();
        $.ajax({
            type: "POST",
            url: '/Home/GetClientsProjectsDropDown',
            data: { 'data': val },
            success: function (data) {
            },
            error: function (data) {
            }
        });
    });
});

转发到:

        [HttpPost]
        public ActionResult GetClientsProjectsDropDown(string data)
        {
            if (!String.IsNullOrEmpty(data))
            {
                var result = new List<SelectListItem>();
                var clientProjects = _clientService.GetClientsProjects(Int32.Parse(data));
                foreach (var proj in clientProjects)
                {
                    var item = new SelectListItem()
                    {
                        Value = proj.ProjectID.ToString(),
                        Text = proj.ProjectName
                    };
                    result.Add(item);
                }
                TempData["ProjectDropdownList"] = result;
                return RedirectToAction("Index");
            }
            return PartialView();
        }

这是index.cshtml:

<div style="display: inline-flex; text-align: center;">
                <div class="dropdown">
                    @Html.DropDownListFor(m => m.Client, ViewBag.ClientDropdownList as List<SelectListItem>, "Clients", new { @id = "clientDropdown", @class = "form-control" })
                </div>
                <div id="projectDropdown" class="dropdown" style="margin-left: 10px;">
                    @if (TempData["ProjectDropdownList"] != null)
                    {
                        @Html.DropDownListFor(m => m.Project, TempData["ProjectDropdownList"] as List<SelectListItem>, "Projects", new { @id = "projectDropdown", @class = "form-control" })
                    }
                    else
                    {
                        @Html.DropDownListFor(m => m.Project, new List<SelectListItem>(), "Projects", new { @id = "projectDropdown", @class = "form-control" })
                    }
                </div>
                <div class="dropdown" style="margin-left: 10px;">
                    @Html.DropDownListFor(m => m.Task, new List<SelectListItem>(), "Tasks", new { @id = "taskDropdown", @class = "form-control" })
                </div>
            </div>

为什么第二个下拉列表没有更新?

C# MVC Not updating Html.DropDownListFor

您的成功回调为空:

 success: function (data) {
    },

数据参数应具有来自控制器的部分 HTML。 您应该将此 HTML 添加到 DOM 中。 例如

    success: function (data) {
         $('#dropdown2Wrapper').add(data);
    },

显然,您需要创建一个 id 为 "dropdown2Wrapper" 的div,或者将此引用更改为相应的 jQuery 选择器。