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

如何在ASP.NET MVC中添加搜索栏并将搜索结果展示在另一页面

ASP.NET MVC 搜索功能调整方案

1. 视图代码调整

你当前的代码存在两层form嵌套的问题,这是导致提交异常的核心原因,直接按以下方式修改:

  • 删除外层冗余的静态<form>标签,把样式类和id放到Html.BeginForm的属性参数中
  • 可选:如果需要支持用户刷新搜索结果页面、分享搜索链接,可将提交方式改为FormMethod.Get

调整后视图代码参考:

@using (Html.BeginForm("RechercheResto", "Client", FormMethod.Post, new { @class = "row contact-form rounded-pill link no-gutters", @id = "contact-form-data" }))
{
    @Html.AntiForgeryToken()
    <div class="col-12 col-lg-8 d-inline-block d-lg-flex align-items-center">
        <div class="form-group">
            <label><i class="lni lni-restaurant" aria-hidden="true"></i></label>
            <input type="text" name="nomResto" placeholder="Nom du restaurant" class="form-control" required>
        </div>
    </div>
    <div class="col-12 col-lg-4">
        <i class="fa fa-spinner fa-spin mr-2 d-none" aria-hidden="true"></i>
        <input type="submit" class="btn main-btn rounded-pill w-100 h-100 contact_btn" value="Rechercher le restaurant" />
    </div>
}

2. 控制器代码调整

  • 首先确认你已经创建了RechercheResto.cshtml视图文件,且视图绑定的模型是IEnumerable<你的项目对应Restaurant实体的命名空间.Restaurant>,否则提交后会报视图找不到或模型绑定错误
  • 可优化搜索逻辑,支持不区分大小写匹配,同时加空值兜底避免数据库查询异常

调整后控制器代码参考:

[ValidateAntiForgeryToken]
// 如果修改为Get提交,删掉上面的[ValidateAntiForgeryToken]注解即可
public ActionResult RechercheResto(string nomResto)
{
    // 空值兜底,避免数据库表为空时抛出空引用异常
    var restoList = db.Restaurants?.ToList() ?? new List<Restaurant>();
    if (!string.IsNullOrEmpty(nomResto))
    {
        // 不区分大小写搜索,适配用户不同输入习惯
        restoList = restoList.Where(r => r.name.Contains(nomResto, StringComparison.OrdinalIgnoreCase)).ToList();
    }
    return View(restoList);
}

3. 可选体验优化

  • 在RechercheResto视图中添加空结果提示,当搜索结果数量为0时,告知用户没有匹配的餐厅
  • 可保留原搜索关键词回填到搜索框中,方便用户修改搜索条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:21:03