【问题标题】:Dropdownlistfor not emptying after having interaction with it与之交互后不清空的下拉列表
【发布时间】:2017-02-14 14:39:33
【问题描述】:

我正在尝试清空由 Dropdownlistfor 创建的下拉列表

    @Html.DropDownListFor(model => model.Id2, (List<SelectListItem>)ViewBag.List2)

更改另一个下拉列表的选定值后

    @Html.DropDownListFor(model => model.Id1, (List<SelectListItem>)ViewBag.List1)

这是我的javascript代码

        function changeList(value, that) {
            //value is equal to the selected value of List2
            var self = $(that).find("#Id2");
            $.ajax({
                url: '@Url.Action("method", "controller")',
                method: 'POST',
                data: { 'value': value },
                dataType: 'json',
                success: function (data, textStatus, jqXHR) {
                    self.empty();
                    $.each(data, function (key, item) {
                        self.append($("<option></option>").val(item.Value).text(item.Text));
                    });
                },
                error: function (jqXHR, textStatus, errorThrown) {
                }
            });
        }

我的问题是,当我更改 List1 的选定值时,它设法更改了 List2 的选项,但它不显示它。

当我在更改 List1 的选定值之前没有单击或与 List2 进行任何交互时,它可以工作。

如果我更改列表 2 的选定值,然后更改列表 1 的选定值,则不会。(它可以工作,但不会正确显示到视图)。

编辑

=>我的 javascript 工作

编辑 2

我在控制器中的方法

    [HttpPost]
    public JsonResult method(long value)
    {
        try
        {
            var items= GetItems(value);
            return Json(new List<SelectListItem>(items));
        }
        catch (Exception ex)
        {
            return Json(new { Result = Error, ex.Message });
        }
    }

【问题讨论】:

  • 在 ajax 调用代码中调用的控制器操作是什么样的?
  • 帖子编辑(见编辑2)
  • 你在哪里以及如何打电话changeList()

标签: javascript jquery ajax asp.net-mvc


【解决方案1】:

我找到了解决方案,我必须将这两行放在循环之后

self.selectmenu("instance").destroy();
self.selectmenu({});

我忘记了我正在使用 jquery .. 抱歉

【讨论】:

    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多