Asp. net ядро ​​mvc просмотреть проблему Razor с результатом возврата в каскадном раскрывающемся списке Ajax - PullRequest
1 голос
/ 30 мая 2020

У меня есть небольшой проект c asp. net core mvc, когда я создал представление Razor с каскадом раскрывающегося списка, я использовал Jquer Ajax, чтобы получить результат первого раскрывающегося списка, вызвав действие контроллера, который у меня есть Во втором раскрывающемся списке ничего нет. Я тестирую действие контроллера. Я получаю JsonResult: результат, например

[{"id_local":1,"metrage":150.0,"prix_vente":950000.0,"numAct":1,"activite":null,"type_local":"Commerce","num_Centre":1,"centre_Commercial":null},{"id_local":4,"metrage":190.0,"prix_vente":850000.0,"numAct":1,"activite":null,"type_local":"Commerce","num_Centre":1,"centre_Commercial":null}]

, просмотрите Razor под моим кодом:

@{
    ViewBag.Title =
        "Vue  Razor ";
}
<script src="~/lib/jquery/dist/jquery.js"></script>
<h2>Controle_WCS</h2>
<div class="row">
    <div class="form-group">
        @Html.DropDownList("ddlCentre", ViewBag.Centre_Commercial as List<SelectListItem>,
                           " -- Sélectionnez Centre Commercial --", new { @class = "form-control" })
        <br />
        @Html.DropDownList("ddlLocal", new List<SelectListItem>(),
                           " -- Sélectionnez Local --", new { @class = "form-control" })

    </div>
</div>
@section scripts {





    <script>
        $(document).ready(function () {
        $("#ddlCentre").change(function () {
            //$("#ddlLocal").empty().append('<option>-- Sélectionnez Local --</option>');
            var id = $(this).val();
            alert('ID'+id); 
            if (id != "")
        $.ajax({
            url:"@Url.Action("GetLocalsList")",
            type:"POST",
            data:'Num_Centre='+id,
            cache: false,
            contentType: "application/json;charset=utf-8",
            // data:"id_local="+id,
            dataType:"json",
            success:function (data) {
                var json = $.parseJSON(data); // create an object with the key of the array
                alert(json); 
                console.log(data);
            $.each(data, function (index, row) {
                        $("#ddlLocal").append("<option value='" + row.id + "'>" + row.id + "</option>")
                    });
                   },
            error: function (req, status, error) {
                alert(error);
            }
        });
            });
        });

    </script>


    }

Контроллер действий:

 [HttpGet]
        public JsonResult GetLocalsList(int id)
        {
            List<Local> lstLocal= new List<Local>();
            lstLocal = objLocal.GetLocalsData(id).ToList();

            return Json(lstLocal);

        }

Заранее спасибо

1 Ответ

0 голосов
/ 30 мая 2020

Ваш метод GetLocalsList - GET. Итак, в запросе AJAX вам нужно изменить тип на GET. Входным параметром метода GetLocalsList является id, поэтому вам нужно будет изменить данные на id = + id. И когда вы добавляете результат JSON в ddlCentre, вы используете row.id, но ваш JsonResult кажется id_local.

Я внес эти изменения в запрос AJAX и попробовал образец проекта. У меня работает.

$.ajax({
            url:"@Url.Action("GetLocalsList")",
            type:"GET",
            data:'id='+id,
            cache: false,
            contentType: "application/json;charset=utf-8",
            // data:"id_local="+id,
            dataType:"json",
            success:function (data) {
                console.log(data);
            $.each(data, function (index, row) {
                $("#ddlLocal").append("<option value='" + row.id_local + "'>" + row.id_local + "</option>")
            });
            },
            error: function (req, status, error) {
                alert(error);
            }
        });
...