В моем приложении у меня есть список выбора, в котором я фильтрую товары по категориям, а также есть возможность фильтровать по названию товара.Проблема заключается в том, что поиск выполняется через текстовое поле, а фильтрация по категориям осуществляется через список выбора, и эти 2 отправляют отдельные запросы на сервер.Обе эти функции прекрасно работают при отдельном использовании, но когда я хочу выполнить фильтрацию по категории, а затем по названию продукта, фильтрация по категории сбрасывается, игнорируя то, что я выбрал.
Я отправляю вызов Ajax в обеих фильтрахслучаев.Я пытался использовать переменные Session или Cache вместо отправки данных с помощью Ajax, но я не смог заставить его работать, возможно, это решило бы проблему.
Это контроллер, которому я отправляю данные.
[HttpPost]
public ActionResult Foods(string foodName, string _category)
{
var foodViewModel = new FoodListViewModel()
{
Foods = MenuItemLogic.GetFoodsToDisplay(foodName, _category),
Categories = MenuItemLogic.GetCategories()
};
return PartialView("Foods",foodViewModel);
}
Вот как я делал фильтрацию по категориям.
<ul id="food-filter-list" class="list-group list-group-flush text-center">
<li class="list-group-item">
@Ajax.ActionLink("Összes", "Foods", "MenuItem" , null , new
AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "page-content",
InsertionMode = InsertionMode.Replace,
AllowCache = true
} , new { @class = Request["_category"] == "" || Request["_category"] == null ? "chosen-filter food-filter-item" : "food-filter-item" })
</li>
@foreach (var category in Model.Categories.Keys)
{
<li class="list-group-item">
@Ajax.ActionLink(category, "Foods", "MenuItem", new{_category = category}, new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "page-content",
InsertionMode = InsertionMode.Replace,
AllowCache = true
}, new { @class = Request["_category"] == category ? "chosen-filter food-filter-item" : "food-filter-item" })
</li>
}
</ul>
Вот так я делал фильтрацию по названию продукта.
@using (Ajax.BeginForm("Foods", "MenuItem",
new AjaxOptions()
{
HttpMethod = "POST",
UpdateTargetId = "page-content",
InsertionMode = InsertionMode.Replace,
}))
{
<div class="row" style="margin-left: 15px; margin-top: 10px">
<div class="row">
<input style="width: 87%; border-radius:0.3em" type="text" name="foodName" />
</div>
<div class="row">
<input class="btn btn-success" type="submit" value="Keresés" />
</div>
</div>
}
Я хотел бы отправить эти2 вместе в 1 запросе, если это возможно, или сохраните выбранную категорию каким-либо образом, чтобы при вводе текста для фильтрации также по названию продукта выбранная категория не сбрасывалась, и поиск не только применялся по названию продукта.