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

ASP.NET Core Razor页面搜索字符串无结果问题求助

排查ASP.NET Core Razor页面搜索功能无效问题

嘿,我一眼就发现问题出在哪了!你在OnGetAsync里的过滤逻辑本身是对的,但最后完全没用到过滤后的查询结果,直接又从数据库拉取了全量数据,这才导致搜索后页面毫无变化。

看你方法里的最后一行代码:

Movie = await _context.Movie.ToListAsync();

你前面明明已经根据SearchString构建了筛选后的movies查询变量,但这里却直接跳过它,去获取整个Movie表的所有数据了,那搜索条件自然就没生效!

修正后的完整代码

只需要把最后一行改成调用过滤后的movies查询即可:

using Microsoft.AspNetCore.Mvc.Rendering;
namespace RazorPagesMovie.Pages.Movies
{
    public class IndexModel : PageModel
    {
        private readonly RazorPagesMovie.Data.RazorPagesMovieContext _context;
        public IndexModel(RazorPagesMovie.Data.RazorPagesMovieContext context)
        {
            _context = context;
        }
        public IList<Movie> Movie { get;set; }
        [BindProperty(SupportsGet = true)]
        public string SearchString { get; set; }
        public SelectList Genre { get; set; }
        [BindProperty(SupportsGet = true)]
        public string MovieGenre { get; set; }
        public async Task OnGetAsync()
        {
            var movies = from m in _context.Movie select m;
            if (!string.IsNullOrEmpty(SearchString))
            {
                movies = movies.Where(s => s.Title.Contains(SearchString));
            }
            // 改用过滤后的查询获取结果
            Movie = await movies.ToListAsync();
        }
    }
}

额外优化建议

为了提升用户体验,你可以把搜索改成不区分大小写的匹配,避免用户因输入大小写不同而搜不到结果:

movies = movies.Where(s => s.Title.Contains(SearchString, StringComparison.OrdinalIgnoreCase));

这样修改后,你的搜索功能就能正常返回匹配标题的电影列表了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 21:07:35