Я хотел бы определить маршрут 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. Как мне это сделать?