ASP.net级联下拉列表

时间:2018-01-05 04:32:58

标签: model-view-controller

尝试在mvc中实现国家/地区下拉列表,但无法实现..

conotroller: -

[HttpGet]
    public ActionResult GetCities(int StateId)
    {

        Business.Services.City cityService = new Business.Services.City();

        List<Business.Models.City> stateList = cityService.GetCityByStateId(StateId);

        //var jsonSerialiser = new JavaScriptSerializer();
        //var json = jsonSerialiser.Serialize(stateList);

        return Json(new { stateList }, JsonRequestBehavior.AllowGet);

    }

方法:

public List<Models.City> GetCityByStateId(int StateId)
        {
            try
            {
                var list = new List<SelectListItem>();

                Collection<DBParameters> parameters = new Collection<DBParameters>();
                parameters.Add(new DBParameters() { Name = "StateId", DBType = DbType.Int32, Value = StateId });
                var city = this.ExecuteProcedure<Models.City>("GetCityByState", parameters).ToList();

                //if (city != null && city.Count > 0)
                //{
                //    list = city.Select(x => new SelectListItem { Text = x.CityName, Value = x.StateId.ToString() }).ToList();
                //}

                return city;

            }
            catch (Exception ex)
            {
                throw;
            }
        }

更改活动:

 $('.ddlstate').change(function () {
    debugger;


    $.ajax({
        url: '@Url.Action("GetCities", "User")',
        type: "GET",
        data: { StateId: $(this).val() },
        dataType: "json",
        success: function (result) {
            debugger;
            //alert(result.stateList[0].CityId);
            $.each(result.stateList, function () {
                debugger;
                $('.cityddl').append($("<option></option>").val(CityId).html(CityName));
            });
        },
        error: function (result, status, jQxhr) {
            alert("Error: " + result + "-" + status + "-" + jQxhr);
        }
    });

});

我得到了方法和控制器中的citites数量,但是当我运行项目并更改状态下拉列表时,我得到了空白的城市下拉列表。怎么了?

1 个答案:

答案 0 :(得分:0)

看起来你在$ .each()调用中遗漏了几件事。

  1. 您应该将ajax调用的JSON结果传递给$ .each
  2. 您还需要为回调函数提供一个参数,以便回调函数可以使用
  3. 看起来像这样:

    $.each(result.stateList, function(index, city) {
      $('.cityddl').append($("<option></option>").val(city.CityId).html(city.CityName));
    });