我一直在使用EF6教程,并创建了功能强大的过滤器!然而,指南只说明如何制作一个过滤器。我已经做了多个过滤器,尽管它们需要不同的字符串来操作。然而,分页使用searchString (过滤字符串之一)根据过滤的结果显示。如何在分页的同时操作多个过滤器??
过滤器和分页:
if (searchString != null)
{
page = 1;
}
else
{
searchString = currentFilter;
}
ViewBag.CurrentFilter = searchString;
var clients = from s in db.Clients.Include(c => c.MJTopics).Include(c => c.UserTable)
select s;
if (!String.IsNullOrEmpty(searchString))
{
clients = clients.Where(s => s.clientN.Contains(searchString)
|| s.homePage.Contains(searchString));
}
if (!String.IsNullOrEmpty(NameString))
{
clients = clients.Where(s => s.clientEmail.Contains(NameString)
|| s.contName.Contains(NameString));
}
if (!String.IsNullOrEmpty(RIString))
{
clients = clients.Where(s => s.clientN.Contains(RIString));
}
if (!String.IsNullOrEmpty(TopicString))
{
clients = clients.Where(s => s.MJTopics.topicalTF.Contains(TopicString));
}分页视图:
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("Index",
new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))
</div>
考虑到的过滤器:
<div class="col-md-4">
@using (Html.BeginForm())
{
<p class="filtertext">Filter Clients:</p>
<p class="filterbox">@Html.TextBox("searchString")</p>
<p class="filterbox2"><input type="submit" value="Search" class="btn btn-default btn-sm selector2" /> </p>
}
</div>
<div class="col-md-4">
@using (Html.BeginForm())
{
<p class="filtertext">Find by Name: </p>
<p class="filterbox"> @Html.TextBox("NameString")</p>
<p class="filterbox2"><input type="submit" value="Search" class="btn btn-default btn-sm selector2" /></p>
}
</div>发布于 2018-03-02 14:11:58
PagedList.Mvc项目于2013年被放弃。该网站警告:
重要:此包已不再维护。请参阅ernado-x/X.PagedList提供的替换。
尽管5年后,这些变化可能已经足够大了,你不能仅仅用另一个来代替一个。
用于替换的Nuget包是X.PagedList.Mvc。
Github回购上的示例表明,它直接使用IQueryable< T>,没有过滤器字符串,例如:
var products = MyProductDataSource.FindAllProducts(); //returns IQueryable<Product> representing an unknown number of products. a thousand maybe?
var pageNumber = page ?? 1; // if no page was specified in the querystring, default to the first page (1)
var onePageOfProducts = products.ToPagedList(pageNumber, 25); // will only contain 25 products max because of the pageSize
ViewBag.OnePageOfProducts = onePageOfProducts;
return View();和
<!-- output a paging control that lets the user navigation to the previous page, next page, etc -->
@Html.PagedListPager( (IPagedList)ViewBag.OnePageOfProducts, page => Url.Action("Index", new { page }) )https://stackoverflow.com/questions/49067666
复制相似问题