Asp.net mvc mvc中的动态城市下拉列表

Asp.net mvc mvc中的动态城市下拉列表,asp.net-mvc,Asp.net Mvc,我试图找出我的代码出了什么问题,我已经疯了,所以这里需要一些帮助, 我的代码运行得很好,实际上我的代码所做的是,当我选择任何一个州时,它会动态地获取表单2 dropdownlist,一个用于州,一个用于城市,它对应的城市会从city dropdownlist中的db中填充!,州dropdownlist填充了州,但城市dropdownlist填充了未定义的选项!,这是我面临的基本问题,我也在粘贴我的代码,也许任何人都能找出它的基本错误 家庭控制器 INDEX.CSHTML 我猜tb_stateci

我试图找出我的代码出了什么问题,我已经疯了,所以这里需要一些帮助, 我的代码运行得很好,实际上我的代码所做的是,当我选择任何一个州时,它会动态地获取表单2 dropdownlist,一个用于州,一个用于城市,它对应的城市会从city dropdownlist中的db中填充!,州dropdownlist填充了州,但城市dropdownlist填充了未定义的选项!,这是我面临的基本问题,我也在粘贴我的代码,也许任何人都能找出它的基本错误

家庭控制器

INDEX.CSHTML

我猜tb_statecity.city是一个字符串,所以这里的查询返回的是一个列表,而不是一个列表

这意味着在JavaScript中,q已经是城市的名称,这解释了为什么q.city是未定义的。试试这个

$.each(data, function (i, q) {
    v += "<Option value=" + q+ ">" + q + "</option>";
});

是的,问题解决了,非常感谢,但是您能详细告诉我为什么我会出现这个错误,以便我以后可以避免它,非常感谢您在.NET中选择城市名称。Selectm=>m.city。。。因此,它返回一个字符串列表,这将成为JavaScript中的字符串数组。
<script src="~/Scripts/jquery-1.7.1.min.js"></script>
<script type="text/javascript">
    $(function () {

        $('#state').change(function () {

            var val = $('#state').val();
            $.get("home/city", { state: val }, function (data) {
                var v="<option>Select</option>"
                $.each(data, function (i, q) {

                    v += "<Option value=" + q.city + ">" + q.city + "</option>";


                });
                $('#city').html(v);

            });

        });

    });



</script>



<div>
    @Html.DropDownList("state", "Select")
    @Html.DropDownList("city", new List<SelectListItem> {    new SelectListItem{Text="Select",Value="0"}


});
var v = dd.tb_statecities
            .Where(m => m.state == state)
            .Select(m => m.city)
            .ToList();
$.each(data, function (i, q) {
    v += "<Option value=" + q+ ">" + q + "</option>";
});