2016-02-11 41 views
0

我想分頁添加到我的partialview添加分頁局部視圖在asp.net mvc的

這是模型類如何退出

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>不包含 '傳呼機'的定義,並且沒有擴展方法'傳呼機'接受第一個參數 類型IEnumerable<ProductTableViewModel>

+1

的方法是自我解釋 - 你的模型是'的IEnumerable '和'IEnumerable '沒有任何屬性。 PaginationModel.Pager是什麼? –

回答

1

傳遞到局部視圖的視圖模型的類型爲ProductTableViewModel而不是IEnumerable<ProductTableViewModel>。因此,請確保您調整部分相應:

@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> 
}