将PagedList与viewmodel MVC 3一起使用

时间:2011-09-08 11:38:13

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-viewmodel pagedlist

我正在尝试使用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") &nbsp;
    <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>

1 个答案:

答案 0 :(得分:7)

以下是我发现的一个使用ViewModel和PagedList的例子。

http://czetsuya-tech.blogspot.com/2011/05/mvc3-dynamic-search-paging-using.html