Как получить массив в AJAX, отправленный с контроллера ASP .NET? - PullRequest
0 голосов
/ 24 апреля 2019

Технологии:

  1. ASP .NET MVC2
  2. JQuery v3

Мой код выглядит следующим образом:

Контроллер:

public ActionResult Create()
    {
        ViewData["department"] = new SelectList(_db.department.ToList(), "idDepartment", "department", 1);
        ViewData["municipality"] = new SelectList(_db.municipality.Where(m => m.idDepartment == 1).ToList(), "idMunicipality", "municipality", 1);
        return View();
    }

    [HttpPost]
    public JsonResult Ajaxmuni(int? Id)
    {
        var data = _db.municipality.Where(m => m.idDepartment == Id).ToList();
        return this.Json(data);
    }

Вид (передний план)

<script type="text/javascript">
$(document).ready(function () {
    $('#department').change(function () {
        var $idDepart = $('#department').val();
        $.ajax({
            url: "/Filegeneral/Ajaxmuni",
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            cache: false,
            data: { Id: $idDepart},
            success: function (data) {
                alert("data: " + data);
            },
            error: function (xhr) {
                alert("Error" + xhr);
            }
       });
    });
});
</script>
<label for="department">Select deparment</label>
<%: Html.DropDownList("department", null, new { @class = "form-control"})%>                        

<label for="municipality">Select municipality</label>
<%: Html.DropDownList("municipality", null, new { @class = "form-control"})%>

Действие Ajaxmuni не получает значение, которое я отправил с ajax, если я переключусь на GET, я получу его, но я не хочу, чтобы оно было получено с помощью GET, но с помощью POST. Теперь, когда я делаю это для GET, я получаю идентификатор отдела, но не могу получить список в представлении клиента. как мне это решить.

UPDATE Мне удалось решить ту часть, в которой я не смог получить значение Id в действии, выполнив следующее:

<script type="text/javascript">
    $(document).ready(function () {
        $('#department').change(function () {
            var $idDepart = $('#department').val();
                $.ajax({
                    url: "/Filegeneral/Ajaxmuni",
                    type: "POST",
                    cache: false,
                    data: { Id: $idDepart},
                    success: function (data) {
                        alert("data: " + data);
                    },
                    error: function (xhr) {
                        alert("Error" + xhr);
                    }
                });
        });
    });

В контроллере:

[HttpPost]
public JsonResult Ajaxmuni(int? Id)
{
    var data = _db.municipality.Where(m => m.idDepartment == Id).Select(m => new{ m.idMunicipality, m.municipality});
    return this.Json(data);
}

сейчас я не знаю, как извлечь данные в представлении, метод

alert("data:" + data);

месяц показывает следующее:

введите описание изображения здесь

как извлечь данные?

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