我环顾四周,只找到了物品清单的分页示例。但我希望该项目的详细页面可以分页。例如:
我有一个索引页面,列出表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,但我没有做到这一点。所以我希望有人可以帮助我。
再次感谢您的时间!
答案 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()
。您必须提供实施,但这是一个开始: