在 asp.net mvc 中向局部视图添加分页
add pagination to partial view in asp.net mvc
我正在尝试为我的 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>
does not contain a definition for
'Pager' and no extension method 'Pager' accepting a first argument of
type IEnumerable<ProductTableViewModel>
您传递给局部视图的视图模型是 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>
}
我正在尝试为我的 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>
does not contain a definition for 'Pager' and no extension method 'Pager' accepting a first argument of typeIEnumerable<ProductTableViewModel>
您传递给局部视图的视图模型是 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>
}