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

Razor Pages无法读取URL中Get参数page?原因与解决方法

Razor页面无法读取URL中page参数的问题及解决办法

问题原因分析

  1. 变量名不匹配(第一种写法)
    你的OnGetAsync方法接收了int page参数,但后续逻辑中使用的是大写开头的Page变量,二者是完全独立的变量。方法参数page能正确获取URL中?page=1的值,但你实际调用的是未初始化的Page字段(默认值为0),导致结果不符合预期。

  2. 属性setter权限不足(第二种写法)
    你定义的Page属性使用了private set,Razor页面的模型绑定系统需要通过公共setter为属性赋值,private修饰符会阻止外部赋值,因此Page始终保持默认值0。

解决办法

方案一:修正变量引用(基于方法参数)

直接修改逻辑中使用的变量名,确保与方法参数一致:

public async Task OnGetAsync(string[] tags, int page)
{
    _logger.Log(LogLevel.Information, $"New index request, page {page}");
    var find = new Api.FindApi(cs);
    posts = await find.Find(tags, page * Constants.POST_PER_PAGE); // 将Page改为page
}

方案二:修正属性setter权限(基于绑定属性)

把Page属性的setter改为public,让模型绑定能正常赋值:

[FromQuery(Name = "page")]
public int Page { get; set; } // 改为public set

public async Task OnGetAsync(string[] tags)
{
    _logger.Log(LogLevel.Information, $"New index request, page {Page}");
    var find = new Api.FindApi(cs);
    posts = await find.Find(tags, Page * Constants.POST_PER_PAGE);
}

额外说明

如果需要给page参数设置默认值(比如URL中无page参数时默认0),可以直接给参数或属性赋值默认值:

  • 方法参数方式:int page = 0
  • 属性方式:public int Page { get; set; } = 0

内容的提问来源于stack exchange,提问作者Nijika Ijichi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 16:06:04