详细页面的分页

时间:2014-04-05 19:32:56

标签: c# asp.net-mvc asp.net-mvc-4 pagination

我环顾四周,只找到了物品清单的分页示例。但我希望该项目的详细页面可以分页。例如:

我有一个索引页面,列出表A中的所有项目,每个项目都有一个“查看详细信息”按钮。

当用户点击“查看详细信息”按钮时,会将其带到详细信息页面(我的工作正常)。

我希望用户能够点击“下一步”/“上一页”查看下一项的详细页面。

任何人都可以给我一个示例或链接到如何执行此操作的示例吗?


更新时间:2014/4/6

我正在尝试结合Jasen和Ehsan Sajjad给出的两个建议,但我仍然陷入困境。所以我希望这些代码有助于使描述更清晰。

我有一个项目表和一个工作表。 项目表可以有0 ... *工作,但工作表只能属于1个项目。

项目索引页面上,所有项目都按项目顺序列出(int projectOrder)。当您单击“查看详细信息”时,它将转到项目详细信息页面,该页面将提取该项目的所有信息以及属于该项目的工作(来自工作表)。在该详细信息页面上,您可以单击“下一个/上一个”按钮,该按钮将带您进入下一个/上一个项目详细信息页面(按项目顺序)。

现在我有:

:: WORK CONTROLLER ::

    myContext myDB = new myContext();

    public ActionResult Index()
    {
        var projects = myDB.Projects.OrderBy(p => p.projectOrder).Include("Works");
        return View(projects);
    }

    public ActionResult Projects(string project, int? pOrder)
    {
        var projectView = myDB.Projects.Include("Works")
            .SingleOrDefault(p => p.projectName == project);

        //var i = 1;
        //int projOrder = projectView.projectOrder;
        //int nextPO = projOrder + i;
        //var stuff = myDB.Projects.SingleOrDefault(j => j.projectOrder == pOrder);

        return View(projectView);
    }

4行注释掉了我试图通过菜单顺序获得下一个项目 - 但它没有用。

::查看 - 工作 - 索引()::

@model IEnumerable<myStuff.Model.Project>

@foreach (var project in Model)
{
    @project.projectName
    @Html.ActionLink("View Details", "Projects", "Work", new { project = project.projectName }, null)
}

::查看 - 工作 - 项目()::

@model myStuff.Model.Project

@Model.projectName
@Html.ActionLink("Next >", "Projects", new { pOrder = Model.projectOrder})

我也在其他页面上列出了所有工作(来自工作表),并且他们有链接到项目的详细信息页面。

我试图将projectOrder递增/递减1,但我没有做到这一点。所以我希望有人可以帮助我。

再次感谢您的时间!

1 个答案:

答案 0 :(得分:0)

以下是您可以采取的方法:

设置控制器以提供单个项目详细信息

public ActionResult Detail(int id)
{
    var project = Projects.Where(p => p.Id == id).FirstOrDefault();
    return View(project);
}

下一步上一页只是Detail(i + 1)Detail(i - 1)。除了ID可能存在间隙,因此不要递增/递减。而是在前面找到原件。

控制器操作变为:

public ActionResult Detail(int id)
{
    var project = Projects.Where(p => p.Id == id).FirstOrDefault();
    var prevId = projectsRepository.GetPrev(project.Id);
    var nextId = projectsRepository.GetNext(project.Id);
    var projectVM = new ProjectVM {
        Project = project,
        PrevId = prevId,
        NextId = nextId
    };
    return View(projectVM);
}

这会为您提供视图上的链接

@Html.ActionLink("prev", "Detail", new { id = Model.PrevId })
@Html.ActionLink("next", "Detail", new { id = Model.NextId })

在此示例中,我编写了一个projectsRepository来提供int? GetPrev()int? GetNext()。您必须提供实施,但这是一个开始: