C# 分页类DLL-Don';不要重复你自己

C# 分页类DLL-Don';不要重复你自己,c#,asp.net,class,dll,dry,C#,Asp.net,Class,Dll,Dry,我有一个简单的寻呼系统。我在任何地方都使用它,只是做了一些小改动。我想创建一个类或dll文件,并更广泛地使用它。我不想重复我的话 我的控制器: public ActionResult Index(int sayfa = 1) { int totalPage = Posts.Count(); int postPerPage = 10; int pageCount = totalPage / postPerPage; if ((totalPage % postPerP

我有一个简单的寻呼系统。我在任何地方都使用它,只是做了一些小改动。我想创建一个类或dll文件,并更广泛地使用它。我不想重复我的话

我的控制器:

public ActionResult Index(int sayfa = 1)
{
    int totalPage = Posts.Count();
    int postPerPage = 10;
    int pageCount = totalPage / postPerPage;
    if ((totalPage % postPerPage) > 0)
    {
        pageCount++;
    }
    ViewBag.PageCurrent = sayfa;
    ViewBag.PageCount = pageCount;
    Posts = (IOrderedQueryable<Post>)Posts.Skip(postPerPage * (sayfa - 1)).Take(postPerPage);
    return View(Posts.ToList());
}
我想要的用法:

IN CONTROLLER:
Posts = Posts.ToMyCustomPagerClass()

IN VIEW:
@Html.Pagination()
我该怎么做? 现在我创建了一个类,但是ViewBags是有问题的。错误:名称“ViewBag”在当前上下文中不存在

public static class ePager<T>
{
    public static IOrderedQueryable<T> ePagedList(IOrderedQueryable<T> sinif, int page, int itemPerPage = 10)
    {
        int totalPage = sinif.Count();

        int pageCount = totalPage / itemPerPage;
        if ((totalPage % itemPerPage) > 0)
        {
            pageCount++;
        }
        ViewBag.PageCurrent = page;
        ViewBag.PageCount = pageCount;
        sinif = (IOrderedQueryable<T>)sinif.Skip(itemPerPage * (page - 1)).Take(itemPerPage);
        return sinif;
    }
}
公共静态类ePage
{
公共静态IOrderedQueryable ePagedList(IOrderedQueryable sinif,int page,int itemPerPage=10)
{
int totalPage=sinif.Count();
int pageCount=总页面/项目每页;
如果((总页面%itemPerPage)>0)
{
pageCount++;
}
ViewBag.PageCurrent=页面;
ViewBag.PageCount=页面计数;
sinif=(IOrderedQueryable)sinif.Skip(itemPerPage*(page-1)).Take(itemPerPage);
返回sinif;
}
}

创建一个基类,该基类包含分页所需的信息,并使视图模型从中继承。在
ViewBag
中传递分页信息一点也不枯燥。

我想使此代码可重用。每次我需要“复制粘贴和编辑”时,我想像这样使用此代码。在CONTROLLER Posts=Posts.ToMyCustomPagerClass()和视图@Html.Pagination()中。类似的东西我不使用视图模型。我的知识不太好。正因为如此,我想使项目尽可能简单。您正在传递
Post
对象列表。您要做的是创建一个类似于
PagedViewModel
的类,其中T是您的
Post
。具有
项的属性,这些项是
T
的列表(您的
Post
)。在控制器中,获取帖子列表,创建PagedViewModel的新实例,并将项目设置为帖子。您可以将此视图模型重新用于其他页面,并封装页面详细信息。除了可视包,一切都好。我现在已经知道如何将类中的数据发送到视图
@Url.Action("Index", "Post" .... (This is also must-have)
IN CONTROLLER:
Posts = Posts.ToMyCustomPagerClass()

IN VIEW:
@Html.Pagination()
public static class ePager<T>
{
    public static IOrderedQueryable<T> ePagedList(IOrderedQueryable<T> sinif, int page, int itemPerPage = 10)
    {
        int totalPage = sinif.Count();

        int pageCount = totalPage / itemPerPage;
        if ((totalPage % itemPerPage) > 0)
        {
            pageCount++;
        }
        ViewBag.PageCurrent = page;
        ViewBag.PageCount = pageCount;
        sinif = (IOrderedQueryable<T>)sinif.Skip(itemPerPage * (page - 1)).Take(itemPerPage);
        return sinif;
    }
}