【问题标题】:Why am I getting a list undefined data no my drop down list?为什么我的下拉列表中没有列表未定义的数据?
【发布时间】:2020-01-05 14:40:15
【问题描述】:

我的 html 中有两个 select 元素,第一个 select 应填充数据库中的数据,第二个应填充数据,具体取决于第一个 select 的选定项。但是,我设法在第一个上获得了价值,而第二个select 出现问题,它返回未定义,具有准确的预期项目计数,但不显示项目名称,仅显示未定义列表。请帮助...这是代码:

1. html

<div class="row">
<div class="col-md-6">
    <div class="form-group">
        Category:
        <select asp-for="CategoryID" id="CategoryDD" class="form-control" asp-items="@(new SelectList(ViewBag.ListOfCategories,"CategoryID","CategoryName"))">
            <option value="">--Select Category--</option>
        </select>
    </div>

</div>
<div class="col-md-6">
    <div class="form-group">
        Item Name:
        <select asp-for="Id" id="ItemDD" class="form-control" asp-items="@(new SelectList("","Id","ItemName"))">
            <option value="">--Select Item--</option>
        </select>

    </div>
</div>

2。 jQuery

$(document).ready(function () {
$("#CategoryDD").change(function () {
    console.log("Feching Items");
    $("#ItemDD").empty();
    $.ajax({
        type: "POST",
        url: "@Url.Action("GetItems")",
        dataType: "Json",               
        data: { id: $("#CategoryDD").val() },
        success: function (items) {
            console.log("Success!!!");
            $.each(items, function (i, item) {
                $("#ItemDD").append("<option value='"+item.Id+"'>"+ item.ItemName + "</option>");
            });
        },
        error: function (ex) {
            alert('Error Loading Items ' + ex);
        }
    });
    return false;
})

});

3. MVC 控制器

    public JsonResult GetItems(int id)
    {
       var objSelectListItem = (from obj in _context.OrderItem.Where(cat => cat.CategoryID == id)

                             select new SelectListItem()
                             {
                                 Text = obj.ItemName,
                                 Value = obj.Id.ToString(),                                 
                             }).ToList();

        return Json(objSelectListItem);
    }    

【问题讨论】:

    标签: jquery ajax model-view-controller


    【解决方案1】:

    代码现在按预期工作,我不敢相信这行简单的代码让我工作了 24 小时。这是我的解决方案代码:

    我改变了这一行:

    $("#ItemDD").append("<option value='"+item.Id+"'>"+ item.ItemName + "</option>");
    

    到这里:

     $.each(result, function (i, item) {
     $("#ItemDD").append($("<option></option>").val(item.value).html(item.text));
    

    });

    【讨论】:

    • 感谢您的帖子。这也解决了我的问题。
    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 2017-01-03
    • 2019-12-06
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 1970-01-01
    相关资源
    最近更新 更多