MVC5:一起过滤结果和分页时遇到麻烦

时间:2019-04-16 20:17:16

标签: c# asp.net-mvc-5

我有一个索引视图(列表),已向其中添加了分页功能,并且效果很好。我还有其他视图(列表),它们都有一个html搜索框,该搜索框将值传递回控制器,并且效果也很好。但是,当我尝试将两者都放在同一观点时。 。我收到空引用错误。

错误消息 值不能为空。 参数名称:值

这是生成错误的行:

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文本框中包含文本,则该页面可以正常工作。 。但是当页面尝试首次加载时,它会失败。

有指针吗?

1 个答案:

答案 0 :(得分:2)

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

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