0

我正在尝试使用 PagedList 来获取一些票的分页列表。

我使用的模型如下:

public class TicketIndexModel
{
    public IEnumerable<Ticket> ticketList { get; set; }
    public string TicketTitle { get; set; }
    public string TicketDescription { get; set; }
}

在控制器中我发送到视图:

TicketIndexModel indexTicketList = new TicketIndexModel();
indexTicketList.ticketList = db.Tickets.Where(r => r.UserName == currentUserName).ToList().OrderByDescending(r => r.DateCreated);
return View(indexTicketList.ticketList.ToPagedList(pageNumber,pageSize));

在视图中我有两件事,所有票的列表和添加另一张票的简单表格。这是一个小代码:

@model PagedList.IPagedList<CDS.Models.TicketIndexModel>
@foreach (var row in Model)
{
    foreach(var item in row.ticketList){
// the list of tickets
}
}

但我的问题在于添加新票的形式

@Html.LabelFor(model => model.TicketTitle) 

model.TicketTitle 不可访问。

我怎样才能解决这个问题 ?还是您建议我使用不同的寻呼系统?

编辑 :

我在控制器中进行了您所说的更改,在视图中切换到 TicketIndexModel,将我的模型更改为使用 IPagedList。

我还添加了以下代码:Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount

@if (Model.HasPreviousPage)
{
    @Html.ActionLink("<<", "Index", new { page = 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
    @Html.Raw(" ");
    @Html.ActionLink("< Prev", "Index", new { page = Model.PageNumber - 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
}
else
{
    @:<<
    @Html.Raw(" ");
    @:< Prev
}

@if (Model.HasNextPage)
{
    @Html.ActionLink("Next >", "Index", new { page = Model.PageNumber + 1, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
    @Html.Raw(" ");
    @Html.ActionLink(">>", "Index", new { page = Model.PageCount, sortOrder = ViewBag.CurrentSort, currentFilter=ViewBag.CurrentFilter  })
}
else
{
    @:Next >
    @Html.Raw(" ")
    @:>>
}

但是现在我收到此错误
Models.TicketIndexModel' does not contain a definition for 'PageCount' 并且没有扩展方法 'PageCount' 接受类型为'Models.TicketIndexModel' 的第一个参数可以找到(您是否缺少 using 指令或程序集参考?)

我应该改变模型吗?我不知道该怎么做,这是我第一次使用它,而且我在 3 个月前才开始使用 MVC。

4

1 回答 1

1

在视图中我有两件事,所有票的列表和添加另一张票的简单表格。

ThenIPagedList<CDS.Models.TicketIndexModel>不是此视图的合适视图模型,因为您需要其中的更多信息,而不仅仅是一个简单的分页工单列表。

您可以将此视图强类型化为TicketIndexModel类型:

TicketIndexModel indexTicketList = new TicketIndexModel();
indexTicketList.ticketList = db
    .Tickets
    .Where(r => r.UserName == currentUserName)
    .ToList()
    .OrderByDescending(r => r.DateCreated)
    .ToPagedList(pageNumber,pageSize);
return View(indexTicketList);

和你的看法:

@model TicketIndexModel
...
Here you can access Model.TicketTitle since you need it and Model.ticketList to show your list

当然,您可能需要调整模型,以便它使用 aIPagedList<Ticket>而不是IEnumerable<Ticket>.

于 2013-05-21T09:29:59.470 回答