Флажок не сохраняет свое состояние в пагинации в. net основном приложении - PullRequest
0 голосов
/ 02 апреля 2020

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

Моя нумерация страниц работает нормально. Единственная проблема состоит в том, чтобы поддерживать статус флажка.

Использовал ViewBag для хранения текущего состояния фильтра, но не повезло.

Не знаю, где go и изменить код, чтобы он работал. Может кто-нибудь поставить некоторые огни на это.

Контроллер

Public async Task<IActionResult> Index(bool searchText, bool currentFilter, int? page)
        {

                int selectedPage = page ?? 1;
                int bypassCount = (selectedPage - 1) * _pagingOptions.PageSize;

                if (searchText != false)
                {
                    page = 1;
                }
                else
                {
                    searchText = currentFilter;

                }

                ViewBag.CurrentFilter = searchText;

        }

index

     <form asp-action="Index" method="get">

              <input type="checkbox" asp-for="searchText" class="form-control" /> 

         <div class="col-md-12">
            <button class="btn btn-primary" type="submit">Search</button>
         </div>                
        </form>

    <table class="table">
        <thead>
            <tr >
                <th>Message Id</th>
                <th>Status</th>
                <th>Resent</th>
                <th>Resent Date</th>
                <th>Created Date</th>
            </tr>
        </thead>
        <tbody>
            @if (Model.Items.TotalItemCount > 0)
            {
                @foreach (var item in Model.Items.ToList())
                {
                        <td>@Html.DisplayFor(modelItem => item.MessageId)</td>
                        <td>@Html.DisplayFor(modelItem => item.Status)</td>
                        <td>@Html.DisplayFor(modelItem => resentString)</td>
                        <td>@Html.DisplayFor(modelItem => resentDateString)</td>
                        <td>@Html.DisplayFor(modelItem => createdDateString)</td>
                    </tr>

                }
            }

        </tbody>
    </table>
</div>
 @if (Model.Items.PageCount > 1)
            {
                @Html.PagedListPager(Model.Items, page => Url.Action("Index", new { page = page, currentFilter = ViewBag.CurrentFilter}),
                                     new PagedListRenderOptions
                                     {
                                         UlElementClasses = new string[] { "pagination", "justify-content-left" },
                                         LiElementClasses = new string[] { "page-item" },
                                         PageClasses = new string[] { "page-link" },
                                         LinkToPreviousPageFormat = "Previous",
                                         LinkToNextPageFormat = "Next",
                                         DisplayEllipsesWhenNotShowingAllPageNumbers = true,
                                         DisplayLinkToPreviousPage = PagedListDisplayMode.Always,
                                         DisplayLinkToNextPage = PagedListDisplayMode.Always
                                     })
            }

1 Ответ

1 голос
/ 03 апреля 2020

Чтобы установить флажок на основе указанного значения c, например, на основе CurrentFilter, вы можете попробовать использовать следующие коды:

@{

     int status = ViewBag.CurrentFilter ? 1 : 0;
}


 <input type="checkbox"  checked="@(1 == status)" class="form-control" />

Ссылка: https://www.learnrazorpages.com/razor-pages/forms/checkboxes

...