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

ASP.NET Core Razor页面搜索提交丢失pageSize路由参数问题

问题原因与解决方案

核心原因

使用method="get"的表单提交时,部分浏览器会丢弃form的action属性中已有的查询字符串,仅将表单内部控件的参数拼接到URL中。你虽然在form/按钮上通过asp-route-pageSize生成了带pageSize的action,但提交时浏览器会忽略这部分参数,只提交levelFilter对应的表单控件值。

而「返回完整列表」的链接是直接构造了包含pageSize的完整URL,点击时浏览器会完整发起该URL请求,因此能正常保留pageSize参数。

解决步骤

  1. 修正PageModel属性绑定
    确保PageSize和搜索参数(如LevelFilter)都添加[BindProperty(SupportsGet = true)]标记,允许Get请求绑定这些属性:

    public class IndexModel : PageModel
    {
        [BindProperty(SupportsGet = true)]
        public int PageSize { get; set; } = 10; // 设置默认页大小
    
        [BindProperty(SupportsGet = true)]
        public string LevelFilter { get; set; }
    
        // 其他分页逻辑(如PageIndex、数据查询方法)
    }
    
  2. 用隐藏字段传递pageSize
    移除form或按钮上的asp-route-pageSize,改为在表单内部添加隐藏字段,将当前pageSize作为表单参数提交:

    <form method="get" asp-page="./Index">
        <!-- 隐藏字段传递当前页大小 -->
        <input type="hidden" asp-for="PageSize" />
        
        <!-- 搜索输入框 -->
        <input asp-for="LevelFilter" placeholder="输入级别筛选..." />
        
        <button type="submit">搜索</button>
    </form>
    
  3. 验证效果
    提交搜索后,URL应同时包含pageSize和levelFilter参数(如/Index?PageSize=10&LevelFilter=xxx),PageModel能正常接收这两个参数进行分页+搜索查询。

内容的提问来源于stack exchange,提问作者Wade Baird

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:43:29