Я использую PagedList.Mvc для разбивки таблицы, и я добавил три фильтра поверх заголовка таблицы. Один для бренда, один для категории и другой для языка. Следующий код работает ...MVC: Фильтровать таблицу более чем одним параметром со следующим кодом
public ActionResult Index(string brand_name, string category_name, string language_name,
int? page)
{
ViewData["brand_name"] = brand_name;
ViewData["category_name"] = category_name;
ViewData["language_name"] = language_name;
IPagedList<Material> onePageOfProducts = db.Materials
.Select(i => new Material
{
Brand = i.Brand,
Category = i.Category,
Language = i.Language,
Bco = i.Bco,
MaterialCod = i.MaterialCod,
Derivation = i.Derivation,
Artwork = i.Artwork,
BcoDelivery = i.BcoDelivery,
MaterialId = i.MaterialId
})
.Where(p =>
p.Brand.ToLower().Contains(brand_name.ToLower()) &&
p.Category.ToLower().Contains(category_name.ToLower()) &&
p.Language.ToLower().Contains(language_name.ToLower())
)
.OrderBy(i => i.MaterialCod)
.ToPagedList<Material>(pageNumber, defaultPageSize);
return View("Index", onePageOfProducts);
}
Теперь проблема в том, что я должен заполнить бренд, категория и язык Textboxes с данными в противном случае он не будет фильтровать, когда я должен быть в состоянии фильтровать независимо от того, что я хочу, будь то бренд, бренд и язык, и так далее.
Каков наиболее эффективный способ фильтрации, используя только то, что предоставляет пользователь, и не пропускать данные?
Работал. Я просто изменил оператор 'if' для' if (! String.IsNullOrWhiteSpace (brand_name)) ', потому что он не будет фильтроваться, если в текстовые поля не добавлены данные, и, наконец, я добавил еще один") 'в запрос 'устанавливает внутри' if '. – Aoren