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

Razor Page无法获取输入值,asp-route-word参数传递问题求助

问题解决方法

核心问题分析

你的代码存在两个关键问题导致word参数始终为null:

  • 输入框缺少name属性,ASP.NET MVC的模型绑定依赖表单元素的name来匹配控制器参数
  • 错误使用asp-route-word属性,它用于传递路由参数,而这里需要通过表单查询字符串传递参数

修正后的表单代码

移除asp-route-word,给输入框添加name="word":

<form class="d-flex" method="get">
   <input class="form-control me-sm-2" type="search" placeholder="Search" id="searchWord" name="word" />
   <button class="btn btn-secondary my-2 my-sm-0" type="submit" asp-controller="Word" asp-action="Index">
       Rechercher
   </button>
</form>

控制器逻辑修正

另外你的查询逻辑存在反向匹配问题,当前代码是判断输入的word是否以数据库中的w.NewWord开头,不符合常规搜索逻辑,应改为判断数据库中的w.NewWord是否以输入的word开头,同时优化查询性能:

public IActionResult Index(string? word)
{
    IEnumerable<Word> objWordList;
    if (string.IsNullOrEmpty(word))
    {
        objWordList = _db.Words;
    }
    else
    {
        // 直接使用EF查询,避免先ToArray()导致全表加载
        objWordList = _db.Words.Where(w => w.NewWord.StartsWith(word));
    }
    return View(objWordList);
}

补充说明

  • 表单使用get方法时,输入框的name和值会自动拼接成查询字符串(如?word=xxx),控制器的word参数会自动匹配接收
  • asp-route-word用于在URL路由中添加/Word/Index/xxx格式的路由参数,和当前需求的查询字符串参数用途不同,因此需要移除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 19:13:20