У меня есть форма с кнопками "вперед" и "назад" условно. При нажатии на кнопку вперед, показываются следующие 5 элементов коллекции или оставшиеся элементы и при нажатии на назад соответственно предыдущие 5
HTML:
<div class="text-center">
<form asp-action="Index">
<button class="btn btn-dark" value="-5" name="shift">Вперед</button>
<button class="btn btn-dark" value="5" name="shift">Назад</button>
</form>
</div>
В методе "Index" я не могу додуматься как их сдвигать
C#
int _shift;
public async Task<IActionResult> Index(int shift = default)
{
if (shift == -5) _shift -= shift;
else if (shift == 5) _shift += shift;
var games = await db.Games.ToArrayAsync();
return View(games[_shift..(_shift + 5)]);
}
То, что вы пытаетесь сделать называется пагинацией, разбиением на отдельные страницы.
Для этого во-первых, задаются:
А) числом элементов, которые размещаются на одной странице - PageLimit (обычно 10) и
Б) либо PageNum -- номером текущей страницы (1, 2, 3...) либо PageOffset -- смещением (10, 20, 30 для PageLimit = 10).
(Выбор PageNum или PageOffset имеет свои особенности, оставим это за рамками вопроса.)
Во-вторых, в запросе переходят от выполнения await db.Games.ToArrayAsync()
к выборке PageLimit элементов начиная с PageOffset:
var games = await db.Games
.Skip(PageOffset)
.Take(PageLimit)
.ToArrayAsync();
И обычно рассчитываю разные параметры, чтобы блокировать кнопки "вперёд" (при достижении последней страницы) или "назад" если мы находимся на самой первой странице.
Это то, что является базовым уровнем - пагинация для linq на базе limit+offset, ну а далее погружение в тему может быть весьма интересным. Почитайте например:
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
хочу сделать анимацию заднего фона в простой 2D игре, чтобы при нажатии на клавиши движения, вслед за персонажем начинал в нужную сторону двигаться...
Начал заниматься разработкой игр на UnityПри создании стали возникать проблемы с "чистотой" и "грамотностью" скриптов
Нужна помощь коллективного разума на тему: как залить часть произвольной замкнутой геометрической фигуры?
Я пытаюсь разместить историю в Инстаграмм с компьютераИспользую Selenium + C# + geckodriver (Console Application)