MVC5:无法同时筛选结果和分页

MVC5: Having Trouble with Filtering Results And Pagination Together

提问人:ExecChef 提问时间:4/17/2019 更新时间:4/17/2019 访问量:96

问:

我有一个索引视图(列表),我添加了分页,它运行良好。我还有其他视图(列表)有一个 html 搜索框,可以将值传递回控制器并且运行良好。但是,当我尝试将两者放在同一个视图上时..我收到一个空引用错误。

错误信息 值不能为 null。 参数名称:value

这是生成错误的行:

var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString));

这是索引视图上的 asp/html 搜索框

form asp-controller="Movies" asp-action="Index">
<p>
    Search Catalog Files: <input type="text" name="SearchString">
    <input type="submit" value="Filter" />
</p>

这是我的索引控制器,它有分页和 searchString

 public ActionResult Index(string searchString)
    {



         var supplies = db.ICS_Supplies.OrderByDescending(g => g.Supplies_ID).ToList();
        var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString));
        var model = new PagedList<ICS_Supplies>(catalogs, 1, 10);

        if (!String.IsNullOrEmpty(searchString))
         {

            catalogs = catalogs.Where(s => s.ItemDescription.Contains(searchString));
         }
        return View(model);

    }

这与异步有关吗?我需要使用以下内容吗?

public async Task<ActionResult> Index(string searchString)

或者也许我的东西顺序错误?如果 SearchString 文本框中有文本,则该页面工作正常。.但是当页面第一次尝试加载时,它会失败。

有什么建议吗?

C# ASP.NET-MVC-5

评论


答:

2赞 Paulo Campez 4/17/2019 #1

您可以在执行前检查 searchString 是否为 null

var catalogs = supplies.Where(s => s.ItemDescription.Contains(searchString ?? string.Empty));

评论

0赞 ExecChef 4/17/2019
谢谢!这成功了。我真的很感谢你的帮助。