asp-route-page无法传递值至OnGet方法,page值始终为1求助
问题原因
你误用了Razor页面路由的保留关键字page作为分页参数名。在Razor页面的路由系统中,page是用来指定页面文件路径的内置参数,当你使用asp-route-page时,框架会将其解析为页面路由的一部分,而非自定义参数传递给OnGet方法,因此你的page参数始终只能拿到默认值1。
解决办法
1. 修改参数名,避开保留关键字
将分页参数名替换为非保留字(比如pageNumber),同步修改前端和后端代码:
前端Razor代码修改:
<div class="container"> @if (pager.TotalPages > 0) { <ul class="pagination justify-content-end"> @for (var pge = pager.StartPage; pge <= pager.EndPage; pge++) { <li class="page-item @(pge == pager.CurrentPage ? "active": "")"> <a class="page-link" asp-route-pageNumber="@pge"> @pge </a> </li> } </ul> } </div>
后端OnGet方法修改:
public async Task<IActionResult> OnGet(int pageNumber = 1) { TextPosts = (await _textPostRepository.GetAllAsync()) .Where(x => !x.Tag.TagManagement.IsMeeting) .ToList(); Tags = (await _tagRepository.GetAllAsync()) .Where(x => !x.TagManagement.IsMeeting) .ToList(); ViewData["Title"] = "Textes"; InitializePage(pageNumber); // 同步修改此处参数 return Page(); }
2. 同步分页初始化逻辑
确保你的InitializePage方法内部,使用传入的pageNumber来设置pager.CurrentPage等核心属性,保证分页组件的状态与参数一致。
补充提示
Razor页面路由常见的保留关键字包括page、handler、area等,自定义参数时需避开这些名称,避免路由解析冲突。
内容的提问来源于stack exchange,提问作者mathdx
相关产品推荐
相关产品推荐

