0

我一直在試圖從Microsoft Docs修改微軟文檔PaginatedList標準清單的工作(.NET核心MVC)

跟着我設法得到足夠遠的分頁例如,當方法傳遞PaginatedList到視圖。然而,在這種return語句是抱怨的說法:

enter image description here

public async Task<IActionResult> TripTable(int? page) 
{ 
    var trips = from t in _tripcontext.Tripmetadata select t; 

    page = 1; 

    int pageSize = 10; 

    return PartialView("PartialTripsView", await PaginatedList<Tripmetadata>.CreateAsync(trips.AsNoTracking(), page ?? 1, pageSize)); 
} 

我已成功地使其他車型這種方法的工作,但由於某種原因,它不爲我Tripmetadata和我的工作不知道這是爲什麼..

Tripmetadata.cs

namespace MSPFrontend.Models 
{ 
    public partial class Tripmetadata 
    { 
     public Tripmetadata() 
     { 
      Tripgpsdata = new HashSet<Tripgpsdata>(); 
      Tripstate = new HashSet<Tripstate>(); 
     } 

     [Key] 
     public int Tripid { get; set; } 

     [Display(Name = "Start Timestamp")] 
     public long? Starttimestamp { get; set; } 

     [Display(Name = "End Timestamp")] 
     public long? Endtimestamp { get; set; } 

     public long? Duration { get; set; } 

     [Display(Name = "Average Speed")] 
     public decimal? AvgSpeed { get; set; } 

     public decimal? Distance { get; set; } 

     public virtual ICollection<Tripgpsdata> Tripgpsdata { get; set; } 
     public virtual ICollection<Tripstate> Tripstate { get; set; } 
    } 
} 

我怎樣才能使我的Tripmetadata模型工作?

UPDATE

我試圖通過添加以下(非異步函數)修改我PaginatedList類,但沒有成功:

public static Task<PaginatedList<T>> Create(List<T> source, int pageIndex, int pageSize) 
{ 
    var count = source.Count(); 
    var items = source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToList(); 
    return new PaginatedList<T>(items, count, pageIndex, pageSize); 
} 

但是現在抱怨說,它不能:

Cannot implicitly convert type 'MSPFrontend.Data.PaginatedList<T>' to 'System.Threading.Tasks.Task<MSPFrontend.Data.PaginatedList<T>>' 
+0

您是否有第二類名爲Tripmetadata?錯誤意味着這兩個列表是不同的類型。 –

回答

0

我在更新之前沒有看到您的代碼,但您似乎混合了異步和同步操作。在PaginatedList中嘗試以下代碼,並保持示例代碼的其餘部分相同。

更改注意事項:(1)現在一切都是異步的。 (2)您的退貨類型應爲IQueryable<T>

public class PaginatedList<T> : List<T> 
{ 
    // ... cutting out irrelevant code 
    public static async Task<PaginatedList<T>> CreateAsync(IQueryable<T> source, int pageIndex, int pageSize) { 
     var count = await source.CountAsync(); 
     var items = await source.Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync(); 
     return new PaginatedList<T>(items, count, pageIndex, pageSize); 
    } 
} 
+0

謝謝你的嘗試。不過,我已經有了這段代碼,正如Microsoft Docs頂部的鏈接所暗示的那樣。 – Zeliax