使用jquery在mvc中的动态州城市下拉列表

时间:2014-04-27 11:26:26

标签: asp.net-mvc

我正在动态地向2个下拉列表添加值,到表单加载期间填充的状态下拉列表,当用户点击任何状态时jquery触发时必须填充它,我面临的问题是,状态下拉列表很容易填充,但当我选择特定状态时,城市下拉列表不包含任何值, state和city是存储在db中的表中的字符串 我将在下面发布我的代码,以便任何人都可以解决我的代码有什么问题

的HomeController

 public ActionResult registration()
        {
            ViewBag.states = dd.tb_statecities.Select(m => new SelectListItem { Text=m.state}).Distinct().ToList();


            return View();

        }
        public ActionResult get(string state)
        {


            var v = (dd.tb_statecities.Where(m => m.state == state).Select(m => m.city)).ToList();
            return Json(v, JsonRequestBehavior.AllowGet);


    }

的jquery ..

$(function () {

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

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


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

        });

    });

});

registration.cshtml

            State @ Html.DropDownList(&#34; states&#34;,&#34; Select&#34;)

    </tr>
     <tr class="t">
        <td>City</td>



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

    </tr>

1 个答案:

答案 0 :(得分:0)

问题是当您使用ViewBag时,您没有发送值/ ID, 我建议你在ViewBag中使用SelectList:

ViewBag.states = new SelectList(db.states, "ID", "states");

然后你可以使用JQuery获取值:

var val = $('#states').val();