【发布时间】:2015-05-09 14:52:23
【问题描述】:
我有一个带有“评论”部分视图的“票证”视图。一个 Ticket 可以有多个 cmets。我想在 Ticket 视图中创建 Comments 的部分视图,以便我可以在 Comments 中添加分页功能,而不会影响 Ticket 视图。 (我将有 2 个其他部分具有与不同数据相关但与票证相关联的相同功能)我正在尝试使用通过 Nuget 提供的 PagedList 库。
理论上,我将票证模型传递给 GetComments 控制器,在该控制器中我搜索票证 cmets 并比较票证 ID。我将评论的 ToPagedList 返回到局部视图。我希望分页在局部视图中和 GetComments 控制器中工作。 (我想保留带有“开箱即用”功能的门票的“详细信息”控制器。例如 return View(db.tickets.find(id))
我以前从未实现过部分,这是我学习 MVC 的第 4 周,因此非常感谢任何帮助!
父视图:TicketDetails.cshtml
@model DearSanta.Models.Ticket
//ticket display markup removed to simplify
// Where I wan my partial view of comments
<div class="col-md-4">
@Html.Partial("GetComments", Model)
</div>
部分视图:GetComments.cshtml
@model IPagedList<DearSanta.Models.TicketComment>
@using PagedList;
@section CSS{
<link href="~/Content/PagedList.css" rel="stylesheet" type="text/css">
}
<div id="comments">
<h4 class="title">Ticket Comments</h4>
<ul class="timeline">
@foreach (var c in Model)
{
<li>
<i class="fa fa-comment"></i>
<span class="date">@c.CreateDate.ToString("d MMM")</span>
<div class="content">
<p><strong>@c.User.DisplayName</strong> @c.Comment</p>
<small>@Convert.ToInt32(((DateTime.Now - c.CreateDate).TotalDays)) days ago</small>
</div>
</li>
}
</ul>
<div>
Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("GetComments","Tickets", new { page }))
</div>
</div>
部分视图控制器:
//Controller references: using PagedList;
using PagedList.Mvc;
public PartialViewResult GetComments(Ticket model, int page = 1)
{
int pageSize = 3;
var comments = db.TicketComment.Where(c => c.TicketId == model.TicketId).ToPagedList(page, pageSize);
return PartialView("GetComments", comments);
}
【问题讨论】:
标签: asp.net-mvc pagination partial-views