根据ASP.NET MVC 5中另一个下拉列表中的选择填充下拉列表

时间:2017-11-29 11:17:46

标签: asp.net-mvc-5

希望有人可以指出我哪里出错了。我正在研究MVC 5 ASP.NET应用程序。在我的视图中,我有一个表单,除了其他控件之外,还有2个下拉框。第一个下拉列表中填充了Viewbag中的值,但我想根据第一个下拉列表中选择的值填充第二个下拉列表。我已经阅读了很多其他帖子,但仍然无法解决。

以下是下拉列表的代码。

@Html.DropDownList("EquipmentPortList", new SelectList(ViewBag.EquipmentPortList, "hvid", "hvnamn"), "--Select Equipment--")

@Html.DropDownList("PortConnectedList", Enumerable.Empty<SelectListItem>(), "--Select Port--")

以下是第一个下拉列表的更改事件代码: -

$(document).on('change', '#EquipmentPortList', function () {
    var url = '@Url.Action("GetPortInt", "bearers")';
    var ports = $('#PortConnectedList');
    var id = $(this).val();

    $.getJSON(url, { portid: id }, function (response) {
        ports.empty();
        $.each(response, function (index, item) {
            ports.append($('</option>').text(item.portnamn).val(item.portid));
        });
    });
});

以下是控制器中的方法: -

public ActionResult GetPortInt(int portid)
{
    var PortConnectedList = from h in nadb.hvportar
                            where h.porthvid == portid && (h.portnamn.Contains("NT") || (h.portnamn.Contains("Port")) || (h.portnamn.Contains("/")))
                            orderby h.portid
                            select new { h.portid, h.portnamn };

    return Json(PortConnectedList, JsonRequestBehavior.AllowGet);
}

好的,所以第一个下拉列表正确填充,当我选择一个值时,我可以看到(使用警报)更改事件触发并正确选择值。

我可以通过使用断点来看到该方法被触发并从数据库返回正确的数据,但之后我不知道什么是错误的,因为下拉列表没有填充。

我从另一个帖子中获取了代码更改事件代码并对其进行了修改以适合我自己的项目,但我无法看到我所缺少的内容。谢谢。

1 个答案:

答案 0 :(得分:0)

斯蒂芬,你的DotnetFiddle链接实际上向我展示了答案。这一行: -

ports.append($('</option>').text(item.portnamn).val(item.por‌​‌​tid)); 

应该阅读

ports.append($('<option></option>').text(item.portnamn).val(‌​‌​item.portid));

一旦我改变了它就有效了。非常感谢。