0
カテゴリでフィルタリングすると、ページが正しく表示されます。検索ボックスから検索すると、最初のページに結果が表示され、すべてのプロジェクトのページ数が表示されます。Asp.Netで検索コアMVC
下記の私のコントローラ:
public ActionResult Index(string category, string search, int page = 1)
{
var viewModel = new ProductsListViewModel();
var query = repository.Products;
if (!String.IsNullOrEmpty(category))
{
query = query.Where(p => p.Category == category);
viewModel.CurrentCategory = category;
}
if (!String.IsNullOrEmpty(search))
{
query = query.Where(p => p.Name.Contains(search) ||
p.Details.Contains(search);
viewModel.Search = search;
}
viewModel.Products = query
.OrderByDescending(p => p.ProductID)
.Skip((page - 1) * PageSize)
.Take(PageSize).ToList();
viewModel.PagingInfo = new PagingInfo()
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = category == null ?
repository.Products.Count() :
repository.Products.Where(e =>
e.Category == category).Count()
};
return View(viewModel);
}
ビューのための私のページへのリンク:
<div style="padding-bottom: 10px" page-model="@Model.PagingInfo" page-action="Index" page-classes-enabled="true" page-class="btn" page-class-normal="btn-default" page-class-selected="btn-primary" page-url-category="@Model.CurrentCategory" class="btn-group pull-right"> </div>
マイPagingInfo.csは次のとおりです。
public int TotalItems { get; set; }
public int ItemsPerPage { get; set; }
public int CurrentPage { get; set; }
public int TotalPages =>
(int)Math.Ceiling((decimal)TotalItems/ItemsPerPage);
'.Where(p => p.Description.Contains(search))'? – Pawel
パラメータ –
@ Pawelに従って検索を適用するには、クエリー可能なにクエリーをキャストする必要があります。 '.Where(p => category)で' .Where(p => p.Description.Contains(search) == null || p.Category == category) '同じメソッドの中で? –
RochaCarter07