Привет всем, я пишу простую электронную коммерцию, и после добавления ценового фильтра у меня возникли проблемы с разбивкой на страницы. Я написал отдельное частичное представление, где я поместил свой список данных продуктов и функцию списка страниц для разбивки на страницы. Все с другими фильтрами и разбиением на страницы в порядке, я вижу количество страниц, но когда вы перебираете следующую страницу, ничего не произошло. Я не могу понять, что не так. Возможно, что-то с функцией 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);
}