条件过滤打破了空格

时间:2016-10-11 16:32:07

标签: c# asp.net-mvc filter

我根据用户输入的标准检索数据库记录的子集。

如果字符串是一个没有空格的单词,则按名称搜索会成功检索包含字符串的所有记录。添加另一个单词或空格时,它会返回一个空结果。

控制器:

public IEnumerable<Product> GetProducts(ProductSearchModel searchModel)
    {
        var result = db.Products.AsQueryable();
        if (searchModel != null)
        {
            if (searchModel.Id.HasValue)
                result = result.Where(x => x.ProductId == searchModel.Id);
            if (!string.IsNullOrEmpty(searchModel.Name))
                result = result.Where(x => x.Name.Contains(searchModel.Name));
            if (!string.IsNullOrEmpty(searchModel.Colour))
                result = result.Where(x => x.Colour.Contains(searchModel.Colour));
            if (!string.IsNullOrEmpty(searchModel.Brand))
                result = result.Where(x => x.Brand.Contains(searchModel.Brand));
            if (!string.IsNullOrEmpty(searchModel.Genre))
                result = result.Where(x => x.Genre.Contains(searchModel.Genre));

            if (searchModel.PriceFrom.HasValue)
                result = result.Where(x => x.Price >= searchModel.PriceFrom);
            if (searchModel.PriceTo.HasValue)
                result = result.Where(x => x.Price <= searchModel.PriceTo);
        }
        return result.AsEnumerable();
    }

视图的一部分(与Model.Name相同的所有字段的实现):

<div class="row">
    <i class="fa fa-search"></i>
    @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
    @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
    @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
    <span class="glyphicon glyphicon-chevron-down" id="advancedSearchToggle"></span>
</div>

...

<div class="form-group">
    <div class="col-md-offset-2 col-md-10">
        <input type="submit" value="Save" class="btn btn-default" />
    </div>
</div>

有谁知道可能是什么问题?

由于

1 个答案:

答案 0 :(得分:0)

尝试删除空格。

result = result.Where(x =&gt; x.Name.Replace(“”,“”)。Contains(searchModel.Name));