У меня есть контроллер, настроенный для фильтрации результатов на основе значения, переданного из раскрывающегося списка, и условия поиска, которое затем обновляет таблицу.Таблица также имеет сортировку (asc / desc) по ссылкам в заголовках таблицы.То, что я хочу сделать, - это найти пользователя для определенного термина, а затем отсортировать этот набор данных.При щелчке по заголовку теперь он сортирует исходный набор данных перед поисковым фильтром.Как сохранить значения исходных двух параметров searchString
и field
и добавить к ним sortOrder
для сортировки этого набора данных при запросе?
DisplayViews () Метод
public async Task<IActionResult> DisplayViews(String sortOrder, string searchString, string field)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DefinitionSortParm"] = sortOrder == "Definition" ? "Definition_desc" : "Definition";
ViewData["OwnerSortParm"] = sortOrder == "Owner" ? "Owner_desc" : "Owner";
ViewData["CurrentFilter"] = searchString;
var Tables = _context.Objects.Where(Object => Object.Type == "View");
switch (sortOrder)
{
case "name_desc":
Tables = Tables.OrderByDescending(s => s.Name);
break;
case "Definition":
Tables = Tables.OrderBy(s => s.Definition);
break;
case "Definition_desc":
Tables = Tables.OrderByDescending(s => s.Definition);
break;
case "Owner":
Tables = Tables.OrderBy(s => s.Owner);
break;
case "Owner_desc":
Tables = Tables.OrderByDescending(s => s.Owner);
break;
default:
Tables = Tables.OrderBy(s => s.Name);
break;
}
if (!String.IsNullOrEmpty(searchString))
{
if((!String.IsNullOrEmpty(field) || !String.IsNullOrWhiteSpace(field)) && field == "Name")
{
Tables = Tables.Where(s => s.Name.Contains(searchString));
}
else if((!String.IsNullOrEmpty(field) || !String.IsNullOrWhiteSpace(field)) && field == "Definition")
{
Tables = Tables.Where(s => s.Definition.Contains(searchString));
}
else if ((!String.IsNullOrEmpty(field) || !String.IsNullOrWhiteSpace(field)) && field == "Owner")
{
Tables = Tables.Where(s => s.Owner.Contains(searchString));
}
//return View(await Tables.AsNoTracking().ToListAsync());
}
return View(await Tables.AsNoTracking().ToListAsync());
}