我正在尝试使用viewmodel实现IPagedList,我的主视图声明是
@model PagedList.PagedList<CustomerOrders.WebUI.Models.SiteAdminListViewModel>
然后我有一个显示模板,其中包含以下声明
@model CustomerOrders.WebUI.Models.SiteAdminListViewModel
在我的控制器中,我将viewmodel传递给视图
return View(new SiteAdminListViewModel(customerSites.ToPagedList(pageIndex, pageSize), customers.ToPagedList(pageIndex, pageSize)));
这导致错误,“此字典需要类型为'PagedList.PagedList 'PagedList.PagedList
的模型项1 [CustomerOrders.WebUI.Models.SiteAdminListViewModel]'
我理解错误在说什么,但我不确定如何修改视图模型以包含PagedList,是否有其他人经历过这个或者有人能指出我正确的方向吗?
编辑////////////////
这是我的viewmodel
public class SiteAdminListViewModel
{
public IEnumerable<CustomerSite> CustomerSites { get; set; }
public IEnumerable<Customer> Customers { get; set; }
public Customer Cust { get; set; }
public CustomerSite CustSite { get; set; }
public bool HasPreviousPage { get; set; }
public bool HasNextPage { get; set; }
public int PageCount { get; set; }
public int PageNumber { get; set; }
public SiteAdminListViewModel()
{
}
public SiteAdminListViewModel(IEnumerable <CustomerSite> customerSites, IEnumerable<Customer> customers)
{
CustomerSites = customerSites;
Customers = customers;
}
}
这是显示模板////////////
的片段@model CustomerOrders.WebUI.Models.SiteAdminListViewModel
@using (Html.BeginForm())
{
<p class="search-controls">
Find site by postcode: @Html.TextBox("SearchString")
<input type="submit" value="Search" /></p>
}
<td>
@Model.CustSite.CustomerSiteId
</td>
<td>
@Html.ActionLink(Model.Cust.CustomerName, "Edit", new { Model.CustSite.CustomerSiteId })
</td>
<td>
@Model.CustSite.AddressLine1
</td>
<td>
@Model.CustSite.Town
</td>
答案 0 :(得分:7)
以下是我发现的一个使用ViewModel和PagedList的例子。
http://czetsuya-tech.blogspot.com/2011/05/mvc3-dynamic-search-paging-using.html