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

ASP.NET Core Razor Pages首页表单值无法传递至后端求助

ASP.NET Core Razor Pages 表单绑定失效解决方案

问题根源

你的代码存在两个核心问题导致表单值无法传递:

  • 输入框同时手动设置了name="searchText"和asp-for="gameViewModel.Name",asp-for会自动生成符合模型绑定规则的name属性(即gameViewModel.Name),但手动设置的name会覆盖这个值,导致后端无法匹配到GameViewModel.Name属性。
  • IndexModel中缺少Post请求处理方法,Razor Pages需要明确的OnPost/OnPostAsync方法来触发模型绑定流程。

修正步骤

  1. 修改前端表单代码:移除input标签的name="searchText"属性,让asp-for自动生成正确的name:
<form method="post" autocomplete="on">
    <label class="offscreen" for="searchText">Enter a game</label>
    <input type="text" id="searchText" class="searchText" list="games" asp-for="gameViewModel.Name"/>
</form>
  1. 补充后端Post处理方法:在IndexModel中添加Post请求处理方法,确保模型绑定能触发:
public class IndexModel : PageModel
{
    private readonly ILogger<IndexModel> _logger;

    public IndexModel(ILogger<IndexModel> logger)
    {
        _logger = logger;
    }

    [BindProperty]
    public GameViewModel gameViewModel { get; set; }

    // 添加Post处理方法
    public IActionResult OnPost()
    {
        // 此处可访问gameViewModel.Name的表单值
        if (!string.IsNullOrEmpty(gameViewModel.Name))
        {
            // 编写你的业务处理逻辑
        }
        return Page();
    }
}

额外检查点

  • 确认GameViewModel的Name属性保持可读写状态(你的代码已满足)。
  • 表单method必须设置为post(你的代码已配置)。
  • 页面需包含防伪令牌:Razor Pages默认自动添加,若手动编写表单,可补充@Html.AntiForgeryToken()确保请求合法性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 13:17:38