我想在Pagedlist
中使用Mvc 5
分页。分页工作正常,但列表仅包含具有特定ID的事务。使用Viewbag
传递id并显示第一个列表,但是当我尝试查看列表的第二页时,它将无法工作,因为它需要的id号不能为null。我将id添加到Url.Action
但仍未传递任何内容。还试图在视图中查看id号,只是为了查看它是否有效,什么都没有出现。任何解决方案?
在第一个视图中链接,该视图传递了ID号并指向列表。
<a href="@Url.Action("Statement", "CheckingAccount", new { checkingAccountId = ViewBag.CheckingAccountId })" class="btn btn-primary btn-lg btn-block">
<span class="glyphicon glyphicon-print"></span> Print Statement
</a>
分页显示,但无法访问列表的第二个或任何其他位。我在下面使用了相同的id号码,但没有任何内容。
@Html.PagedListPager(Model, page => Url.Action("Statement", new { page, PageSize = Model.PageSize, checkingAccountId = ViewBag.CheckingAccountId } ))
如果我在浏览器中手动输入id,例如
statement?page=1&pageSize=4&CheckingAccountId=1
它有效,但我需要通过PagedListPager
这是我的控制器
public ActionResult Statement(int checkingAccountId, int page = 1, int pageSize = 4)
{
var checkingAccount = db.CheckingAccounts.Find(checkingAccountId);
List<Transaction> statement = checkingAccount.Transactions.ToList();
ViewBag.CheckingAccountId = checkingAccountId;
PagedList<Transaction> model = new PagedList<Transaction>(statement, page, pageSize);
return View(model);
}
当我启动它时,它将带我到/statement?checkingAccountId=1
工作并显示前4个语句,但当我试图查看语句的其余部分时,PagedListPager
将只有statement?Page=1&pageSize=4
{1}}会因错过checkingAccountId
答案 0 :(得分:1)
我明白了。
@Html.PagedListPager(Model, page => Url.Action("Statement", new { checkingAccountId = ViewContext.ViewBag.CheckingAccountId, page, PageSize = Model.PageSize } ))
需要添加 ViewContext
才能从viewbag获取checkingAccountId
并在控制器中再次声明id。
public ActionResult Statement(int checkingAccountId, int page = 1, int pageSize = 4)
{
var checkingAccount = db.CheckingAccounts.Find(checkingAccountId);
List<Transaction> statement = checkingAccount.Transactions.ToList();
ViewBag.CheckingAccountId = checkingAccountId;
PagedList<Transaction> model = new PagedList<Transaction>(statement, page, pageSize);
return View(model);
}