با سلام خدمت استاد گرامی و دوستان
در قسمت 50 هنگامی که ما Url رو در ViewBag به این صورت "Admin/User/" به صفحه میفرستیم اگر فیلتری اعمال کرده باشیم با عوض کردن صفحه ازبین میره و همه کاربران رو نشون میده. برای حل این مشکل و استفاده از اون توی بقیه ماژول ها این تکه کد رو توی AdminPaginationPartial قرار بدیم فیلتر ها دیگه از بین نمیرن و میتونیم روی دیتای فیلتر شده صفحه بندی داشته باشیم.
@using HStoreCom.Domain.ViewModels._0_Common
@model PagingViewModel
@{
Layout = null;
ViewBag.Url = Url.Action(
ViewContext.RouteData.Values["action"]?.ToString(),
ViewContext.RouteData.Values["controller"]?.ToString(),
new { area = ViewContext.RouteData.Values["area"] }
);
var query = Context.Request.Query
.Where(q => q.Key != "PageId")
.ToDictionary(q => q.Key, q => q.Value.ToString());
string GetPageUrl(int pageId)
{
var parameters = new Dictionary<string, string>(query)
{
["PageId"] = pageId.ToString()
};
return $"{ViewBag.Url}?{string.Join("&",
parameters.Select(p =>
$"{Uri.EscapeDataString(p.Key)}={Uri.EscapeDataString(p.Value)}"))}";
}
}و در لینک دکمه ها متد GetPageUrl رو فراخوانی میکنیم:
if (Model.PageId == i)
{
<li class="page-item active">
<a class="page-link" href="@GetPageUrl(i)">@i</a>
</li>
}
else
{
<li class="page-item">
<a class="page-link" href="@GetPageUrl(i)">@i</a>
</li>
}این روشی بود که من انجام دادم برای صفحه بندی روی دیتا اگر فیلتری داشته باشه . ممنون میشم اگر نظرتون رو بگید و اگر جاییش ایراد داره توضیح بدید.