Передать значения параметров из html в Controller в ASP .Net Core
Стоит с виду простая задача: в веб приложении на ASP .Net Core есть html-страница, на странице таблица и два окошка выбора даты - начальная и конечная, а также кнопка "Найти". Код следующий:
<input type="date" id="startdate" value="2021-10-01" />
<input type="date" id="enddate" value="2021-10-10" />
<input type="submit" value="Найти" class="btn btn-outline-dark" />
Также есть таблица, которая выдается через Controller при заходе на нужную страницу:
public async Task<IActionResult> MyPageWithTable(DateTime? startdate, DateTime? enddate)
{
return View(await _dbcontext.Table.Where(x => x.pl_date_first>=startdate&&x.pl_date_first<=enddate).ToListAsync());
}
На данный момент на странице показывается пустая таблица.
Вопрос следующий: как передать параметры startdate и enddate в метод MyPageWithTable, чтобы по выбору начальной и конечной даты в окошках и нажатию кнопки "Найти" в таблицу передавались записи за нужный период?

Ответы (2 шт):
Вообще для оформления таблиц и настройки фильтрации, можно использовать Syncfusion, как это использовать именно для ASP.NET Core показано вот здесь. Это пример редизайна интернет-магазина на ASP.NET Core MVC на .NET 5, где также показано использование Syncfusion для оформления вывода данных в таблице, и настройка фильтрации. Но можно сделать проще, создавая еще один метод типа Post, который будет вызван при нажатии на кнопку "Найти", и в который передаются значения startdate и enddate. Внутри этого метода, снова вызывается метод MyPageWithTable, типа Get, но уже с новым диапазоном для дат.
В итоге сделал следующим образом: Добавил к окошкам выбора даты и кнопке "Найти" html-форму post:
<form method="post" action="/Home/MyPageWithTable">
<input type="date" id="startdate" name="startdate" value="2021-10-01" />
<input type="date" id="enddate" name="enddate" value="2021-10-22" />
<input type="submit" value="Найти" class="btn btn-outline-dark" />
</form>
Далее добавил в контроллере [HttpPost]:
[HttpPost]
public async Task<IActionResult> MyPageWithTable(DateTime? startdate, DateTime? enddate)
{
return View(await _dbcontext.Table.Where(x => x.pl_date_first >= startdate && x.pl_date_first <= enddate.Value.AddDays(1)).ToListAsync());
}
Как итог - кнопка работает, даты ищутся.