Прайсфильтр и проблема разбивки на страницы - PullRequest
0 голосов
/ 29 мая 2020

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

<div class="col-md-12" style="background-color: white; padding-top: 20px; padding-bottom: 20px; border-radius: 3px;">
    <div class="col-md-2">
        <h4>Filter By Category</h4>
        <div class="list-group">
            @Html.ActionLink("All", "Index", null, new { @class = Request["Category"] == null ? "list-group-item active" : "list-group-item" })
            @foreach (var cat in Model.ProductCategories)
            {
                @Html.ActionLink(cat.Category, "Index", new { Category = cat.Category }, new { @class = Request["Category"] == cat.Category ? "list-group-item active" : "list-group-item" })
            }
        </div>

        <h4>Filter By Rating</h4>
        <div class="col-md-12" style="border: solid thin #dddddd; border-radius: 3px;">
        </div>

        <h4>Filter By Price Range</h4>
        <div class="col-md-12" style="border: solid thin #dddddd; border-radius: 3px;">
            <div class="col-md-12 container1">
                <div class="row">
                    <div class="col-sm-12">
                        <div id="slider-range"></div>
                    </div>
                </div>
                <div class="row slider-labels">
                    <div class="col-xs-6 caption">
                        @*<strong>Min:</strong>*@
                        <span id="slider-range-value1"></span>
                    </div>
                    <div class="col-xs-6 text-right caption">
                        @*<strong>Max:</strong>*@
                        <span id="slider-range-value2"></span>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-12">
                        <form>
                            <input type="hidden" name="min-value" value="">
                            <input type="hidden" name="max-value" value="">
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <div class="col-md-10" style="padding-top: 10px; padding-bottom: 10px;">
        <div class="col-md-12">
            @using (Html.BeginForm("Index", "Home", FormMethod.Get, new { id = "pageSizeForm" }))
            {

                <div class="col-md-11 col-sm-12">
                    @Html.TextBox("Search", ViewBag.FilterValue as string, new { @class = "form-control" })
                </div>
                <div class="col-md-1 col-sm-12">
                    <button type="submit" class="btn btn-primary" value="Search"><span class="glyphicon glyphicon-search"></span></button>
                </div>
            }
        </div>
        <div class="col-md-12">
            <hr />
            @if (Model.Products.Count() == 0)
            {
                <h2 style="text-align: center;">No records found!!!</h2>
            }
        </div>
        <div class="col-md-11" id="tableContainer">
            @{
                var filterProdViewModel = new FilterProductsViewModel();
                filterProdViewModel.Products = Model.Products;
                Html.RenderPartial("FilterProducts", filterProdViewModel);
             }
        </div>
    </div>
</div>

Частичное представление

@foreach (var item in Model.Products)
{

    <div class="card col-md-3" style="height:330px; margin: 15px; padding: 10px; border: solid thin whitesmoke">
        <img class="card-img-top" style=" max-width:100%; height:200px;" src="~/Content/ProductImages/@item.Image" />
        <div class="card-body">
            <h5 class="card-title"><strong>@Html.ActionLink(item.Name, "Details", new { Id = item.Id })</strong></h5>
            <p class="card-text"><h4>@item.Price</h4></p>
            <a href="@Url.Action("AddToBasket", "Basket", new{Id=item.Id})" class="btn btn-primary">Add To Basket</a>
        </div>
    </div>
}
<div class="col-md-12">
    Page: @(Model.Products.PageCount < Model.Products.PageNumber ? 0 : Model.Products.PageNumber)/@Model.Products.PageCount

    @Html.PagedListPager(Model.Products, page => Url.Action("Index",
    new { page, pageSize = ViewBag.psize }))
</div>

Контроллер

 public ActionResult Index(string Search, int? page, int? pageSize, int? maxPrice, int? minPrice, string Category = null)
        {

            IPagedList<Product> products;
            List<ProductCategory> prodCat = productCategories.Collection().ToList();
            if (Category == "")
                Category = null;
            int pagesize = (pageSize ?? 5);
            ViewBag.psize = pagesize;
            ViewBag.Min = prodScont.GetMinPrice();
            ViewBag.Max = prodScont.GetMaxPrice();

            products = prodScont.SearchProducts(minPrice, maxPrice, Category, Search).ToPagedList(page ?? 1, pagesize);

            ProductListViewModel model = new ProductListViewModel();
            model.Products = products;
            model.ProductCategories = prodCat;
            model.Category = Category;
            model.Search = Search;
            model.Page = page;
            return View(model);
        }

        public ActionResult FilterProducts(int? page, int? pageSize, int? maxPrice, int? minPrice, string Category = null, string Search = null)
        {
            FilterProductsViewModel model = new FilterProductsViewModel();
            IPagedList<Product> products;
            if (Category == "")
               Category = null;
            int pagesize = (pageSize ?? 5);
            ViewBag.psize = pagesize;

            products = prodScont.SearchProducts(minPrice, maxPrice, Category, Search).ToPagedList(page ?? 1, pagesize);

            model.Products = products;
            return PartialView(model);
        }
...