You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 02:12:02