Как заполнить выпадающий список на основе выбранного значения в другом выпадающем списке в ядре asp.net 2.0 - PullRequest
0 голосов
/ 06 мая 2019

Заполните раскрывающийся список избирательных округов на основе выбранного значения округа.

Я заполняю раскрывающийся список избирательных округов на основе значения, выбранного в раскрывающемся списке округа.Где я буду фильтровать все избирательные округа, которые принадлежат округу в ядре ASP.net.Раскрывающийся список округа заполняется, но список округа не заполняется.

 **Model Section**
    public string ConstituencyID { get; set; }
    public string Constituencyname { get; set; }
    public string CustNo { get; set; }
    public string ConnectedCusts { get; set; }
    public string CountyID { get; set; }
    public County county{ get; set; }



**Controller Section**
   [HttpGet]
    public JsonResult GetconstituencyList(string countyId)
        {
    var constituencylist = new SelectList(_context.Constituency.Where(c => 
    c.county.CountyID == countyId), "ConstituencyID", "Constituencyname");
    return Json(constituencylist);
        }

**View Section**

   <label asp-for="CountyID" class="control-label"></label>
   <select asp-for="CountyID" class="form-control" asp- 
   items="ViewBag.CountyID" id="countylist"> </select>
   <label asp-for="ConstituencyID" class="control-label"></label>
   <select asp-for="ConstituencyID" class="form-control"select 
   id="Constituencylist"></select>

<script type="text/javascript">

    $(document).ready(function () {
        var items = "<option value='0'>Select</option>";
        $("#Constituencylist").html(items);
    });


    $("#countylist").change(function () {
        var countyId = $("#countylist").val();
        var url = "/Schemes/GetconstituencyList";

        $.getJSON(url, { CountyID: countyId }, function (data) {
            var item = "";
            $("#Constituencylist").empty();
            $.each(data, function (i, Constituency) {
                item += '<option value="' + Constituency.value + '">' + Constituency.text + '</option>'
            });
            $("#Constituencylist").html(item);
        });
    });

    </script>

1 Ответ

0 голосов
/ 06 мая 2019

Вы возвращаете объект SelectList как JSON, а затем пытаетесь выполнить итерацию непосредственно над этим объектом.SelectList само по себе не перечисляемо;у него есть Items член, который содержит перечислимое.Другими словами, вам нужно изменить свой JS на:

$.each(data.items, function (i, Constituency) {

Или просто вернуть список прямо из вашего действия.Нет необходимости заключать его в SelectList, так как это ничего не делает для вас:

[HttpGet]
public IActionResult GetconstituencyList(string countyId)
{
    var constituencylist = _context.Constituency.Where(c => c.county.CountyID == countyId).Select(c => new { value = c.ConstituencyID, text = c.Constituencyname });
    return Ok(constituencylist);
}

Я также позволил себе сменить тип возвращаемого значения на IActionResult вместоJsonResult.Это плохая идея - возвращать JsonResult или любой конкретный тип результата по этому вопросу напрямую.Пусть ASP.NET Core решит сериализацию на основе заголовка Accept.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...