2009-06-22 31 views
6

Tôi có chế độ xem cần có một danh sách PaginatedList (như trong mẫu bữa tối Nerd). Trang hoạt động như dự định. Bây giờ tôi đã thêm một phần xem có cùng một PaginatedList và tôi gọi RnederPartial bên trong khung nhìn đầu tiên. ASP.NET ném một ngoại lệ mà tôi dường như không thể giải quyết được.Danh sách loại tùy chỉnh ASP.NET MVC ở chế độ xem một phần

PaginatedList Code:

public class PaginatedList<T> : List<T> 
{ 
    public int PageIndex { get; private set; } 
    public int PageSize { get; private set; } 
    public int TotalCount { get; private set; } 
    public int TotalPages { get; private set; } 

    public PaginatedList(IQueryable<T> source, int pageIndex, int pageSize) 
    { 
     PageIndex = pageIndex; 
     PageSize = pageSize; 
     TotalCount = source.Count(); 
     TotalPages = (int)Math.Ceiling(TotalCount/(double)PageSize); 
     this.AddRange(source.Skip(PageIndex * PageSize).Take(PageSize)); 
    } 

    public bool HasPreviousPage 
    { 
     get 
     { 
      return (PageIndex > 0); 
     } 
    } 

    public bool HasNextPage 
    { 
     get 
     { 
      return (PageIndex + 1 < TotalPages); 
     } 
    } 
} 

Bộ điều khiển:

[Authorize] 
public ActionResult Index(int? page) 
{ 
    const int pageSize = 10; 

    var workstations = itilRepository.FindAllWorkstations(); 

    var paginatedWorkstations = new PaginatedList<Workstation>(workstations, page ?? 0, pageSize); 

    return View("Index", paginatedWorkstations); 
} 

Đầu Index Xem:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ITILDatabase.Helpers.PaginatedList<ITILDatabase.Models.Workstation>>" %> 

tôi gọi là xem một phần trong giao diện Index như sau:

<% Html.RenderPartial("Workstations", Model); %> 

Đầu Workstations Partial View:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewPage<ITILDatabase.Helpers.PaginatedList<ITILDatabase.Models.Workstation>>" %> 

Các lỗi tôi nhận được là:

c: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 \ Temporary ASP.NET Files \ root \ d2889d23 \ c6192b3e \ App_Web_workstations.ascx.a8d08dba.tgrd74s0.0.cs (156): lỗi CS0030: Không thể chuyển đổi loại 'ASP.views_home_workstations_ascx' thành 'System.Web.Mvc.ViewUserControl'

Nếu có ai biết tại sao tôi nhận được lỗi này tôi rất nhiều sẽ đánh giá cao nó.

Cảm ơn bạn!

+0

Chỉ muốn nói rằng không phải là một ý tưởng tốt để ăn cắp mã này PaginatedList 1: 1. Nó đòi hỏi tất cả các mục được lấy từ cơ sở dữ liệu. –

Trả lời

23

Workstations của bạn phần Xem lý lịch thành đầu nên hình như:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ITILDatabase.Helpers.PaginatedList<ITILDatabase.Models.Workstation>>" %> 

Thay đổi ViewPage để ViewUserControl

+0

Tôi nhận thấy điều này, nhưng không thể nhớ nó sẽ như thế nào. ^^ –

+0

Cảm ơn bạn, tôi không thể tin rằng tôi không thấy điều đó! – Lukasz

+0

Thx, cùng một vấn đề đối với tôi, là VS tạo ra sự kiểm soát như System.Web.Mvc.ViewPage không ViewUserControl. –

Các vấn đề liên quan