详情页面的分页
本文关键字:分页 | 更新日期: 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 访问列表中的上一项?
- 如何通过实体框架选择下一个和上一个实体?