ammu11 Ответов: 0

Потери подкачки при фильтрации на ОТ и до настоящего времени MVC


Я делаю проект, и при поиске на основе поиска от и до он фильтрует, но при выборе второй страницы после подачи подкачки фильтр, который дает потери и показывает все элементы из БД.

контроллер

public async Task<ActionResult> Index(string sortOrder, string CurrentSort, string currentFilter, string searchString, int? page, string FromDateString, string ToDateString)
        {
            int pageSize = 10;
            int pageIndex = 1;
            pageIndex = page.HasValue ? Convert.ToInt32(page) : 1;

            ViewBag.CurrentSort = sortOrder;

            sortOrder = String.IsNullOrEmpty(sortOrder) ? "DateTime" : sortOrder;

            IPagedList<PhoneNo> Phone= null;


            var List = db.PhoneNos.ToList();

            if (!String.IsNullOrEmpty(searchString))
            {
                List = List .Where(s => s.PhoneNum.ToString().Contains(searchString)).ToList();
            }
            if (!String.IsNullOrEmpty(FromDateString) && String.IsNullOrEmpty(ToDateString))
            {
                List = List .Where(s => s.DateTime >= FromDateString.ToDateFromString()).ToList();
            }
            if (!String.IsNullOrEmpty(ToDateString) && String.IsNullOrEmpty(FromDateString))
            {
                List = List .Where(s => s.DateTime <= ToDateString.ToDateFromString()).ToList();
            }
            if (!String.IsNullOrEmpty(ToDateString) && !String.IsNullOrEmpty(FromDateString))
            {
                List = List .Where(s => s.DateTime >= FromDateString.ToDateFromString() && s.DateTime <= ToDateString.ToDateFromString()).ToList();
            }


            switch (sortOrder)
            {
                case "DateTime":
                    if (sortOrder.Equals(CurrentSort))
                        Phone= List .OrderByDescending(m => m.DateTime).ToPagedList(pageIndex, pageSize);
                    else
                        Phone= List .OrderBy(m => m.DateTime).ToPagedList(pageIndex, pageSize);
                    break;

                case "Default":
                    Phone= List .OrderBy(m => m.DateTime).ToPagedList(pageIndex, pageSize);
                    break;
            }

            return View(Phone);
        }


это мой cntroller и поиск на основе fromdatestring и todatestring

на странице просмотра сеанс подкачки

<div style="text-align:left;">
                        Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber)
                        of @Model.PageCount

                        @Html.PagedListPager(Model, page => Url.Action("Index", new { page, currentFilter = ViewBag.CurrentFilter, sortOrder = ViewBag.sortOrder }))
                    </div>


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

Что я уже пробовал:

Я искал и нашел только один поиск, но не получил поиск по двум разным строкам

Bohdan Stupak

на самом деле вы основываете свой фильтр на многих параметрах, которые вы не предоставляете в @Html.PagedListPager. Так ли это должно быть?

ammu11

На самом деле я не знаю, что дать в @Html.PagedListPager но при задании параметра и без такого длинного параметра фильтрация работает неправильно
В чем может быть проблема ??

Bohdan Stupak

Я имею в виду, что вы предоставляете в public async Task<actionresult> индексировать гораздо больше параметров, чем в @Html.PagedListPager. Насколько я понимаю, список параметров должен быть таким же, как только page = & gt; Url. Action будет получать запрос на ваш сервер, который будет обрабатываться в публичной асинхронной задаче & lt;actionresult> Index method

0 Ответов