Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created January 1, 2026 12:31
Show Gist options
  • Select an option

  • Save sunmeat/192c0bd55a964c60ad67607151ab814b to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/192c0bd55a964c60ad67607151ab814b to your computer and use it in GitHub Desktop.
вью для Sieve
@model Soccer.Models.IndexViewModel
@{
ViewData["Title"] = "Гравці";
Layout = "~/Views/Shared/_Layout.cshtml";
string filters = Context.Request.Query["filters"].FirstOrDefault() ?? "";
string sorts = Context.Request.Query["sorts"].FirstOrDefault() ?? "";
string pageSize = Context.Request.Query["pageSize"].FirstOrDefault() ?? Model.PageSize.ToString();
int currentTeamId = ViewBag.CurrentTeamId as int? ?? 0;
string baseQuery = $"?filters={System.Web.HttpUtility.UrlEncode(filters)}&sorts={System.Web.HttpUtility.UrlEncode(sorts)}&pageSize={pageSize}";
}
<h1 class="mb-4">Список гравців</h1>
<form method="get" class="card shadow-sm mb-4 border-0">
<div class="card-body">
<div class="row g-3 align-items-end">
<div class="col-md-6">
<label class="form-label fw-medium">Фільтри (через кому)</label>
<input name="filters" class="form-control" value="@filters"
placeholder="Name@@=Мба, Position@@=вінгер, Age>25" />
</div>
<div class="col-md-2">
<label class="form-label fw-medium">Сортування</label>
<input name="sorts" class="form-control" value="@sorts"
placeholder="-Age, Name" />
</div>
<div class="col-md-2">
<label class="form-label fw-medium">На стор.</label>
<input name="pageSize" type="number" class="form-control" value="@pageSize" min="5" max="50" />
</div>
<div class="col-md-2">
<button type="submit" class="btn btn-primary w-100">Застосувати</button>
</div>
</div>
<small class="text-muted d-block mt-2">
Приклади: Name@@=Кіліан (містить), Age&gt;=25 (від 25), Position==Форвард, TeamId==1
</small>
</div>
</form>
<div class="card shadow-sm mb-4 border-0">
<div class="card-body">
<h5 class="card-title mb-3">Швидкий фільтр по командах</h5>
<div class="d-flex flex-wrap gap-2">
<a href="?pageSize=@pageSize&sorts=@sorts" class="btn btn-sm @(currentTeamId == 0 ? "btn-primary" : "btn-outline-primary")">
Всі команди
</a>
@foreach (var team in ViewBag.Teams as List<Soccer.Models.Team>)
{
<a href="[email protected]&pageSize=@pageSize&sorts=@sorts"
class="btn btn-sm @(team.Id == currentTeamId ? "btn-primary" : "btn-outline-primary")">
@team.Name
</a>
}
</div>
</div>
</div>
<p class="mb-3">
<a asp-action="Create" class="btn btn-success">Додати нового гравця</a>
<span class="ms-3 text-muted">Знайдено: @Model.TotalCount гравців</span>
</p>
<table class="table table-striped table-hover align-middle">
<thead class="table-light">
<tr>
<th>Ім'я</th>
<th>Вік</th>
<th>Позиція</th>
<th>Команда</th>
<th class="text-end">Дії</th>
</tr>
</thead>
<tbody>
@if (!Model.Players.Any())
{
<tr>
<td colspan="5" class="text-center text-muted py-5">Гравців не знайдено, ой вей...</td>
</tr>
}
else
{
@foreach (var item in Model.Players)
{
<tr>
<td><strong>@item.Name</strong></td>
<td>@item.Age</td>
<td>@item.Position</td>
<td>@(item.Team?.Name ?? "-")</td>
<td class="text-end">
<a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-sm btn-outline-primary">Редагувати</a>
<a asp-action="Details" asp-route-id="@item.Id" class="btn btn-sm btn-outline-info">Деталі</a>
<a asp-action="Delete" asp-route-id="@item.Id" class="btn btn-sm btn-outline-danger">Видалити</a>
</td>
</tr>
}
}
</tbody>
</table>
@if (Model.TotalPages > 1)
{
<nav aria-label="Пагінація">
<ul class="pagination justify-content-center">
@if (Model.HasPrevious)
{
<li class="page-item">
<a class="page-link" href="@baseQuery&page=@(Model.Page - 1)">Попередня</a>
</li>
}
else
{
<li class="page-item disabled"><span class="page-link">Попередня</span></li>
}
@for (int i = 1; i <= Model.TotalPages; i++)
{
if (i == Model.Page)
{
<li class="page-item active"><span class="page-link">@i</span></li>
}
else
{
<li class="page-item">
<a class="page-link" href="@baseQuery&page=@i">@i</a>
</li>
}
}
@if (Model.HasNext)
{
<li class="page-item">
<a class="page-link" href="@baseQuery&page=@(Model.Page + 1)">Наступна</a>
</li>
}
else
{
<li class="page-item disabled"><span class="page-link">Наступна</span></li>
}
</ul>
</nav>
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment