Фильтрация ReflectionIT работает, вторая страница не работает, не работает сортировка. net Core 2.1 - PullRequest
0 голосов
/ 22 января 2020

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

   public async Task<IActionResult> MenageUsers(string filter, int page = 1,string sortExpression = "UserName")
    {
            var qry = _userManager.Users.AsNoTracking().AsQueryable();

            if (!string.IsNullOrWhiteSpace(filter))
            {
                qry = qry.Where(p => p.UserName.Contains(filter) || p.Name.Contains(filter) || p.SurName.Contains(filter)
                || p.Email.Contains(filter) );
            }

            var model = await PagingList.CreateAsync(
                                         qry, 10, page, sortExpression, "UserName");

            model.RouteValue = new RouteValueDictionary {
            { "filter", filter}
        };

            return View(model);

    }

Представление

@model ReflectionIT.Mvc.Paging.PagingList<ProjectiWebFinal.Data.ApplicationUser>
@using ReflectionIT.Mvc.Paging
@addTagHelper *, ReflectionIT.Mvc.Paging

@{
    ViewData["Title"] = "Home Page";
    var user = (List<ApplicationUser>)ViewData["users"];
}
@using ProjectiWebFinal.Data

<a asp-action="CreateUser">CreateUser</a>
<form method="get" class="form-inline">
    <input name="filter" class="form-control" placeholder="filter"
           value="@Model.RouteValue["Filter"]" />
    <button type="submit" class="btn btn-info">
        <span class="glyphicon glyphicon-search" aria-hidden="true"></span> Search
    </button>
</form>

<nav aria-label="Products navigation example">
    <vc:pager paging-list="@Model" />
</nav>
<table id="" class="table">
    <thead>
        <tr>
            <th>
                @Html.SortableHeaderFor(model => model.Id, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.UserName, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.Email, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.Name, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.SurName, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.Gender, this.Model)
            </th>
            <th>
                @Html.SortableHeaderFor(model => model.Coins, this.Model)
            </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>
                    @Html.DisplayFor(modelItem => item.Email)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Name)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.SurName)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Gender)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Coins)
                </td>

                <td>
                    <a asp-controller="Admin" asp-action="EditUser" asp-route-id="@item.Id">EditUser</a>
                    <a asp-controller="Admin" asp-action="DeleteUser" asp-route-id="@item.Id">DeleteUser</a>
                </td>
            </tr>
        }
    </tbody>
</table>

Я также добавил services.AddPaging (), но сначала я запустил программу без нее, потому что я забыл ее, затем добавил и сохранил его, но ничего не изменилось.

Под изображением происходящего.

enter image description here enter image description here enter image description here

Обновление

для всех, у кого возникла эта проблема, посмотрите на URL, в моем случае там написано: Admin / Index? Filter .... insted of Admin / ManageUsers эта проблема вызвана тем, что класс PageList по умолчанию имеет Action = "Index", поэтому измените его на имя действия одним способом, как я использовал var model = await PagingList.CreateAsyn c .... write model. Действие = "YourActionOrPageName"

...