【问题标题】:Mvc pagedlist - PagedListPager with Id attribute from ViewbagMvc pagedlist - 具有来自 Viewbag 的 Id 属性的 PagedListPager
【发布时间】:2016-03-12 13:34:29
【问题描述】:

我正在尝试在Mvc 5 中使用Pagedlist 分页。分页工作正常,但是列表仅包含具有特定 ID 的事务。 id 通过Viewbag 传递,第一个列表出现,但是当我试图查看列表的第二页时,它不起作用,因为它需要不能为空的 id 号。我将 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>

分页显示,但无法访问列表的第二位或任何其他位。我在同一个身份证号上进一步使用了以下通行证,但没有。

@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&amp;pageSize=4想出缺少检查帐户ID的错误

【问题讨论】:

  • 返回视图时是否在Statement()方法中设置ViewBag.CheckingAccountId的值?您需要显示控制器代码

标签: c# asp.net-mvc pagedlist


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2020-09-17
    • 2015-01-08
    • 1970-01-01
    相关资源
    最近更新 更多