У меня есть список именованных моделей, в котором содержится еще один список именованных вариантов. Я хочу выполнить метод getbysearchString, где имена вариантов фильтруются, а строка поиска передается в URL.
Repository.cs
_list.Add(new ModelSearch
{
ID = 1,
Title = "Scorpio",
Variants=new List<Variant> { new Variant {ID=1,ModelID=1,Title="Scorpio VLX refresh" },
new Variant { ID=2,ModelID=1,Title="Scorpio LX refresh" },
new Variant { ID=3,ModelID=1,Title="Scorpio3 S2" }
}
});
_list.Add(new ModelSearch
{
ID = 2,
Title = "Bolero",
Variants = new List<Variant> { new Variant {ID=1,ModelID=2,Title="T4" },
new Variant { ID=2,ModelID=2,Title="T4+" },
new Variant { ID=3,ModelID=2,Title="T6" },
new Variant { ID=3,ModelID=2,Title="T6+" }
}
});
//Search method
public IEnumerable<ModelSearch> GetBySearchString(string searchString)
{
return _list.Where(m => m.Title.ToLower().Contains(searchString)|| m.Variants.Contains(searchString)).AsEnumerable();
}
ModelSearchController.cs
public class ModelSearchController : Controller
{
private IRepository _repo;
public ModelSearchController()
{
_repo = new Repository.Repository();
}
public IActionResult Search(string searchString)
{
var filteredList = _repo.GetBySearchString(searchString);
return View(filteredList);
}
}
Here is my **Index.cshtml** file:
@model IEnumerable<myApp.Models.ModelSearch>
<table class="table">
<tbody>
@foreach (var item in Model)
{
@foreach (var variant in item.Variants)
{
<tr>
<td>
@Html.DisplayFor(modelItem => variant.Title)
</td>
</tr>
}
}
</tbody>
</table>
Пожалуйста, помогите мне, как этого добиться.