将分页添加到 asp.net MVC 中的部分视图
本文关键字:视图 MVC net 分页 添加 asp | 更新日期: 2023-09-27 18:34:05
我正在尝试向我的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>
不包含 "寻呼机"和没有扩展方法"寻呼机"接受第一个参数 类型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>
}