【问题标题】:add pagination to partial view in asp.net mvc在 asp.net mvc 中为部分视图添加分页
【发布时间】:2016-05-21 20:15:49
【问题描述】:

我正在尝试将分页添加到我的partialview

这就是模型类退出的方式

public class DashboardViewModel
{
    public List<ProductTableViewModel> ProductTable;

}

public class ProductTableViewModel
{       
    public string Product_ID { get; set; }     
    public string Product_Title { get; set; }

    public IEnumerable<ProductTableViewModel> Items { get; set; }
    public PaginationModel.Pager Pager { get; set; }

    public int PageSize { get; set; }
    public int PageCount { get; set; }
    public int CurrentPageIndex { get; set; }

}

这是控制器方法

    public ActionResult ProductsTablePartial(int? page)
    {
        var allproducts = ..

        var pager = new PaginationModel.Pager(allproducts.Count(), page);

        var viewModel = new ProductTableViewModel
        {
            Items = allproducts.Skip((pager.CurrentPage - 1) * pager.PageSize).Take(pager.PageSize),
            Pager = pager
        };

        return PartialView("ProductsTablePartial", viewModel);
    }

这是主视图页面

@model project_name.Models.DashboardViewModel

@{
}

<div>
    @Html.Action("ProductsTablePartial", "Home")
</div>

这是带有分页控件的局部视图

@model IEnumerable< project_name.Models.ProductTableViewModel>

<fieldset>    

    <table class="table">

        <tr>
            <th>
                @Html.DisplayNameFor(model => model.Product_ID)
            </th>

            <th>
                @Html.DisplayNameFor(model => model.Product_Title)
            </th>

        </tr>

        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Product_ID)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Product_Title)
                </td>               
            </tr>

        }

    </table>

    <!-- pager -->
                <div class="col-md-10">
                    <!-- pager -->
                    @if (Model.Pager.EndPage > 1)
                    {
                        <ul class="pagination">

                        @if (Model.Pager.CurrentPage > 1)
                        {
                                <li>
                                    <a>First</a>
                                </li>

                                <li>
                                    <a>Previous</a>
                                </li>
                            }

                        @for (var page = Model.Pager.StartPage; page <= Model.Pager.EndPage; page++)
                        {
                                <li class="@(page == Model.Pager.CurrentPage ? "active" : "")">
                                    <a>@page</a>
                                </li>
                            }

                        @if (Model.Pager.CurrentPage < Model.Pager.TotalPages)
                        {
                                <li>
                                    <a>Next</a>
                                </li>

                                <li>

                                    <a>Last</a>
                                </li>
                         }
                        </ul>

                    }

                </div>  


</fieldset>

此代码没有任何编译时错误,但在运行时出现过一次

我收到以下异常

IEnumerable&lt;ProductTableViewModel&gt; 不包含 'Pager' 并且没有扩展方法 'Pager' 接受第一个参数 输入IEnumerable&lt;ProductTableViewModel&gt;

【问题讨论】:

  • 该方法是不言自明的 - 您的模型是 IEnumerable&lt;T&gt;IEnumerable&lt;T&gt; 没有任何属性。 PaginationModel.Pager 是什么?

标签: c# asp.net-mvc asp.net-mvc-4 pagination partial-views


【解决方案1】:

您传递给局部视图的视图模型的类型是 ProductTableViewModel 而不是 IEnumerable&lt;ProductTableViewModel&gt;。因此,请确保您相应地调整您的部分:

@model project_name.Models.ProductTableViewModel

然后循环遍历模型的 Items 属性,而不是模型本身:

@foreach (var item in Model.Items)
{
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Product_ID)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Product_Title)
        </td>               
    </tr>
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-20
    • 2012-06-22
    • 2011-03-31
    • 2017-06-14
    • 1970-01-01
    • 2023-04-10
    • 2012-12-02
    • 1970-01-01
    相关资源
    最近更新 更多