详情页面的分页

本文关键字:分页 | 更新日期: 2023-09-27 17:57:06

我环顾四周,只找到了项目列表分页的示例。但是我希望该项目的详细页面示例是可分页的。例如:

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

当用户单击"查看详细信息"按钮时,它会将他们带到其详细信息页面(我得到了这个工作)。

我希望用户能够单击"下一步"/"上一个"以查看下一项的详细信息页面。

谁能给我一个例子或如何做到这一点的例子链接?


更新: 4/6/2014

我试图将Jasen和Ehsan Sajjad给出的两个建议结合起来,但我仍然被困住了。所以我希望这些代码能帮助使描述更清晰。

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

"项目索引"页上,所有项目都按项目顺序 (int projectOrder) 列出。当您单击"查看详细信息"时,它将带您进入项目详细信息页面,该页面提取该项目的所有信息和属于该项目的工作(从工作表中)。在该详细信息页面上,您将能够单击"下一个/上一个"按钮,该按钮将带您进入下一个/上一个项目详细信息页面(按项目顺序)。

现在我有:

:: 工作控制器 ::

    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})

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

我试图将项目顺序增加/减少 1,但我做得不对。所以我希望有人能帮助我。

再次感谢您抽出宝贵时间!

详情页面的分页

您可以采用以下方法:

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

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()。您必须提供实现,但这是一个开始:

  • LINQ 列表中的下一项
  • 如何使用 linQ 访问列表中的上一项?
  • 如何通过实体框架选择下一个和上一个实体?