Я изо всех сил пытаюсь найти правильный способ достижения этой цели.
У меня есть представление, содержащее кучу данных. В верхней части представления я добавил форму с некоторыми параметрами для фильтрации. После того, как они нажмут «Отправить», я хочу вызвать вызов контроллера C#, чтобы отфильтровать данные и инициировать обновление страницы sh. Я смог сделать это без передачи каких-либо параметров, вызвав в окне refre sh через javascript. Но как только я пытался получить данные, введенные пользователем, я продолжал упираться в стену. При попытке перейти к javascript всегда загружалось начальное состояние модели. Поэтому я попытался изменить его, чтобы использовать форму, которая вызывает действие, которое работало на бэкэнде, но теперь оно просто выдает ошибку 500, когда возвращает представление, и я понятия не имею, почему.
Каков правильный способ делать что-то подобное?
Summary.cs html
@model SummaryModel
<!-- ... excluding content -->
<form id="form" asp-area="" asp-controller="Home" asp-action="refreshSummary">
<div class="col-md-6">
<div class="form-group">
<label asp-for="EpicType" class="label-control"></label>
<select asp-for="EpicType" class="form-control" asp-items="@QueryModel.EpicTypes"></select>
<span asp-validation-for="EpicType" class="text-danger"></span>
</div>
</div>
<p></p>
<div class="form-group" style="align-content: center; text-align: center; padding-bottom: 5px;" ;>
<button type="submit" id="submitbtn" class="btn btn-sm btn-primary rounded-0">Apply</button>
</div>
</form>
<!-- ... excluding content -->
Остальная часть страницы просто отображает данные, не уверенные, что они имеют отношение к вопросу. При подаче заявки я хочу обновить страницу новыми отфильтрованными результатами.
HomeController.cs
/// <summary>
/// Refreshes the list of epics based on filters
/// </summary>
/// <param name="FilterModel">filterData</param>
/// <returns>result</returns>
public IActionResult refreshSummary(SummaryModel filterData)
{
.. do filtering here ..
filteredPorts.Sort();
return View("Summary");
}
Я успешно выполнил этот вызов. Но возврат - это когда выдается 500 ошибок, и я не понимаю в Visual Studio, почему. В автозагрузке у меня:
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Summary}");