首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET多数据过滤器

.NET多数据过滤器
EN

Stack Overflow用户
提问于 2018-03-02 10:53:26
回答 1查看 66关注 0票数 0

我一直在使用EF6教程,并创建了功能强大的过滤器!然而,指南只说明如何制作一个过滤器。我已经做了多个过滤器,尽管它们需要不同的字符串来操作。然而,分页使用searchString (过滤字符串之一)根据过滤的结果显示。如何在分页的同时操作多个过滤器??

过滤器和分页:

代码语言:javascript
复制
        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));
        }

分页视图:

代码语言:javascript
复制
    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>

考虑到的过滤器:

代码语言:javascript
复制
    <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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-02 14:11:58

PagedList.Mvc项目于2013年被放弃。该网站警告:

重要:此包已不再维护。请参阅ernado-x/X.PagedList提供的替换。

尽管5年后,这些变化可能已经足够大了,你不能仅仅用另一个来代替一个。

用于替换的Nuget包是X.PagedList.Mvc

Github回购上的示例表明,它直接使用IQueryable< T>,没有过滤器字符串,例如:

代码语言:javascript
复制
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();

代码语言:javascript
复制
<!-- 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 }) )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49067666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档