Как отправить данные из View в Controller при фильтрации по нескольким факторам? - PullRequest
0 голосов
/ 23 декабря 2018

В моем приложении у меня есть список выбора, в котором я фильтрую товары по категориям, а также есть возможность фильтровать по названию товара.Проблема заключается в том, что поиск выполняется через текстовое поле, а фильтрация по категориям осуществляется через список выбора, и эти 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 запросе, если это возможно, или сохраните выбранную категорию каким-либо образом, чтобы при вводе текста для фильтрации также по названию продукта выбранная категория не сбрасывалась, и поиск не только применялся по названию продукта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...