我正在嘗試對 ASP.NET Core MVC 和物體框架中的表記錄進行分頁。我關注了這個視頻,這是我的代碼:
尋呼機.cs
using System;
namespace WebApp.Models
{
public class Pager
{
public int TotalItems { get; private set; }
public int CurrentPage { get; private set; }
public int PageSize { get; private set; }
public int TotalPages { get; private set; }
public int StartPage { get; private set; }
public int EndPage { get; private set; }
public Pager()
{
}
public Pager(int totalItems, int page, int pageSize = 10)
{
int totalPages = (int)Math.Ceiling((decimal)totalItems / (decimal)pageSize);
int currentPage = page;
int startPage = currentPage - 5;
int endPage = currentPage 4;
if (startPage <= 0)
{
endPage = endPage - (startPage - 1);
startPage = 1;
}
if (endPage > totalPages)
{
endPage = totalPages;
if (endPage > 10)
{
startPage = endPage - 9;
}
}
TotalItems = totalItems;
CurrentPage = currentPage;
PageSize = pageSize;
TotalPages = totalPages;
StartPage = startPage;
EndPage = endPage;
}
}
}
旅游控制器:
public IActionResult AllTours(int pg = 1)
{
List<Tour> tours = _context.Tour.ToList();
const int pageSize = 9;
if (pg < 1)
pg = 1;
int recsCount = tours.Count();
var pager = new Pager(recsCount,pg,pageSize);
int recSkip = (pg - 1)* pageSize;
var data = tours.Skip(recSkip).Take(pager.PageSize).ToList();
this.ViewBag.Pager= pager;
return View(data);
}
索引.cshtml:
@model IEnumerable<WebApp.Models.Tour>
@{
ViewData["Title"] = "Tours";
Pager pager=new Pager();
int pageNo = 0;
if (ViewBag.Pager != null)
{
pager = ViewBag.Pager;
pageNo = pager.CurrentPage;
}
}
<div >
@if(pager.TotalPages > 0)
{
<div >
<div >
<ul >
@for(var pge = pager.StartPage;pge <= pager.EndPage;pge )
{
<li active" : "")">
<a asp-controller="Tour" asp-action="AllTours" asp-route-pg="@pge">@pge</a>
</li>
}
</ul>
</div>
</div>
}
</div>
但是這段代碼沒有做分頁,當我點擊頁碼時,我得到這個錯誤:
找不到此 localhost 頁面沒有找到該網址的網頁:https://localhost:5001/Tour/AllTours?pg=2 HTTP ERROR 404
uj5u.com熱心網友回復:
檢查錯誤資訊,它顯示:
https://localhost:5001/Tour/AllTours?pg=2
但是在您的問題中,您提供的控制器是ToursController,因此請嘗試更改asp-controller="Tour"為asp-controller="Tours".
我很困惑的一點是你的動作名稱是AllTours,一般來說,對應的頁面是AllTours.cshtml,但是你寫Index.cshtml在你的問題中,所以我不確定你是否寫錯了問題或者你是否真的在頁面上寫了Index.cshtml。
默認路由模板{controller=Home}/{action=Index}/{id?},所以如果你寫actionAllTours到page Index.cshtml,url將不能正確導航到那個頁面。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/483889.html
