在asp.net mvc中为分区视图添加分页

时间:2016-02-11 07:05:05

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

我正在尝试为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<ProductTableViewModel>不包含定义   'Pager'并没有扩展方法'Pager'接受第一个参数   输入IEnumerable<ProductTableViewModel>

1 个答案:

答案 0 :(得分:1)

您传递到部分视图的视图模型属于 >> dig +short gmail.com mx 20 alt2.gmail-smtp-in.l.google.com. 10 alt1.gmail-smtp-in.l.google.com. 5 gmail-smtp-in.l.google.com. 40 alt4.gmail-smtp-in.l.google.com. 30 alt3.gmail-smtp-in.l.google.com. >> telnet gmail-smtp-in.l.google.com 25 220 mx.google.com ESMTP c90si10657664pfd.233 - gsmtp >>ehlo gmail.com 250-mx.google.com at your service, 250-SIZE 35882577 250-8BITMIME 250-STARTTLS 250-ENHANCEDSTATUSCODES 250-PIPELINING 250 SMTPUTF8 而非ProductTableViewModel。因此,请务必相应地调整部分:

IEnumerable<ProductTableViewModel>

然后遍历模型的@model project_name.Models.ProductTableViewModel 属性,而不是模型本身:

Items