Передайте список объектов из JQuery в метод IActionResult, который возвращает представление - PullRequest
0 голосов
/ 09 апреля 2020

У меня сейчас проблемы с отображением списка объектов, которые я получил в ответ на мой API. Ответ проходит и возвращает всех моих пользователей. Я передаю его методу контроллера, который просто возвращает представление с объектами в качестве модели, но когда я достигаю этого шага, действие завершается, и оно не отображает новую страницу

Моя Jquery:

<script>
        $(document).ready(function () {
            $('div.hidden').fadeIn(1500).removeClass('hidden');
        });

        $(function () {

            $("#btnGetUsers").click(function () {
                debugger;
                var pathname = window.location.pathname.split("/");
                var settings = {
                    contentType: "application/json",
                    accepts: "application/json",
                    beforeSend: function (request) {
                        request.setRequestHeader("AuthToken", "Token " + pathname[pathname.length - 3]);
                    },
                    dataType: "json",
                    type: "GET",
                    url: "https://localhost:44324/api/User/ListAll",
                    success: function (result) {
                        $.post('@Url.Action("ListAll", "User")', { users: result });
                    },
                    error: function () {
                        alert("Error")
                    }
                };
                $.ajax(settings);
            });
        }
    );
    </script>

Метод моего контроллера:

        public IActionResult ListAll(List<User> users)
        {
            return View("ListAll", users);
        }

1 Ответ

0 голосов
/ 10 апреля 2020

Вот обходной путь, при котором при использовании частичного представления список пользователей отображается в том же виде, к которому можно обратиться;

Основной вид

<button id="btnGetUsers">GetUsers</button>

<div id="userList">

</div>

@section Scripts
{
 <script>
 $("#btnGetUsers").click(function () {
            debugger;
            var pathname = window.location.pathname.split("/");
            var settings = {
                //...

                dataType: "json",
                type: "GET",
                url: "https://localhost:44389/api/Test/ListAll",
                success: function (data) {
                    $.post('@Url.Action("ListAll", "Home")', { users: data }, function (result) {
                        $("#userList").html(result);
                    });
                },
                error: function () {
                    alert("Error")
                }
            };
            $.ajax(settings);
        });
</script>
}

_UserList

@model IEnumerable<Demo1.Models.User>

<table class="table">
  <thead>
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ID)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Username)
        </th>
        <th></th>
    </tr>
</thead>
<tbody>
    @foreach (var item in Model)
    {
        <tr>
            <td>
                @Html.DisplayFor(modelItem => item.ID)
            </td>
            <td>
                @Html.DisplayFor(modelItem => item.Username)
            </td>
            <td>
            </td>
        </tr>
    }
  </tbody>
</table>

MVC Контроллер

    [HttpPost]
    public IActionResult ListAll(List<User> users)
    {
        return PartialView("_UserList", users);
    }

Результат

enter image description here

...