MVC маршрут для имитации HTTP POST - PullRequest
0 голосов
/ 01 мая 2020

Я хотел бы определить маршрут MVC, который работает точно так же, как отправка формы с другой страницы просмотра, например, / Bags / Swaps отправляет пользователя в метод / Bags / Index [HttpPost], как если бы флажок Swaps был выбран.

Мой MVC проект позволяет людям искать памятные вещи авиакомпании. Я создал форму в представлении индекса (), которая состоит из 2 текстовых полей и флажка, чтобы пользователь мог искать определенные c интересующие элементы:

@model List<AirSicknessBags.Models.Bagsmvc>

@using (Html.BeginForm("Index", "Bags", FormMethod.Post))

{
    <div class="container">
        <div class="col-2">Find Airline</div>
        <div class="col-2 offset-2">Search Detail</div>
        <input type="text" id="Airline" name="Airline" />
        <input type="text" id="Detail" name="Detail" />

        <label for="Swaps">Swaps Only?</label>
        <input type="checkbox" id="Swaps" name="Swaps">
        <br>
        <input type="submit" />
    </div>
}

Когда пользователь нажимает кнопку Отправить, [ Контроллер HttpPost} вызывает Index с данными формы и успешно извлекает и отображает данные из базы данных, ууу!:

        public async Task<IActionResult> Index()
        {
            // string swaps = Request.Form["Swaps"]; THIS IS THE LINE I'D LIKE TO SIMULATE
            IActionResult bags = await GetBagsFromDB(Request.Form);

            var okResult = bags as OkObjectResult;
            var baglist = okResult.Value as List<Bagsmvc>;

            return View(baglist);
        }


   public async Task<IActionResult> GetBagsFromDB(IFormCollection? collection)
    {
    // DB Stuff based upon items passed in collection such as Airline or "Swaps"
    }

Вместо того, чтобы каждый заполнял форму, чтобы узнать, что я должен поменяться, я ' Я хотел бы просто отправить людей прямо на URL. Таким образом, у меня есть обработчик маршрута для / Bags / Swaps:

public ActionResult Swaps()
        {
            return RedirectToAction("Index", "Bags", new { Swaps = "on" });
        }

Однако это вызывает индекс [HttpGet] () вместо имитации [HttpPost], как если бы кто-то установил флажок Swaps. Я попытался взломать код GET, чтобы заставить QueryString в коллекцию и вызвать GetBagsFromDB, но не могу этого сделать.

Я предполагаю, что весь мой подход к проектированию здесь неправильный, но все, что я хочу сделать, это мой маршрут имитирует POST. Как мне это сделать?

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