в ViewComponent.cs
Код: Выделить всё
public async Task[i] InvokeAsync(int categoryId, string search, string sort, int page, int pageSize)
{
var items = await _equipmentRepository.GetEquipmentActive();
// Filtering by category
if (categoryId > 0)
{
items = items.Where(x => x.HealthProjectUsefilCategoryId == categoryId).ToList();
}
// Searching
if (!string.IsNullOrEmpty(search))
{
items = items.Where(x => x.Name != null && x.Name.Contains(search, StringComparison.OrdinalIgnoreCase)).ToList();
}
// Sorting
items = sort switch
{
"Price" => items.OrderBy(x => x.Price).ToList(),
"Priority" => items.OrderBy(x => x.Priority).ToList(),
_ => items
};
// Pagination
var pagedItems = items.Skip((page - 1) * pageSize).Take(pageSize).ToList();
// JSON response
var result = new
{
Items = pagedItems.Select(x => new
{
x.Id,
x.Name,
x.Price,
x.Priority,
x.Description,
x.ImageUrl,
x.ModifyDate
}),
TotalCount = items.Count,
CurrentPage = page,
TotalPages = (int)Math.Ceiling(items.Count / (double)pageSize)
};
foreach (var item in items)
{
Console.WriteLine($"Equipment: {item.Name}, ID: {item.Id}");
}
var viewModel = new EquipmentViewModel
{
Equipments = pagedItems,
TotalCount = items.Count,
CurrentPage = page,
TotalPages = (int)Math.Ceiling(items.Count / (double)pageSize)
};
return View(viewModel);
Код: Выделить всё
@using DNTPersianUtils.Core
@using KH.Services;
@model KH.Models.EquipmentViewModel;
@foreach (var card in Model.Equipments)
{
[url=#]
[img]@card.ImageUrl[/img]
[/url]
[url=#]@card.Name[/url]
[/i]
@DNTPersianUtils.Core.PersianDateTimeUtils.ToShortPersianDateString(card.ModifyDate).ToPersianNumbers()
@card.Description
[list]
[*][i][/i]تعداد مورد نیاز:
@card.Quantity.ToPersianNumbers()
[*][i][/i]
قیمت:@DNTPersianUtils.Core.PersianNumbersUtils.ToPersianNumbers(string.Format("{0:N0}",
(int)@card.Price)) ریال
@* (@card.Price.ToPersianNumbers())*@
[*][i][/i]تعداد تهیه شده تاکنون .
[*]
[i] class="fas fa-play mr-2">[/i]کمک مالی
[/list]
также это моя модель представления, которую я использую в представлении
Код: Выделить всё
public class EquipmentViewModel
{
public IEnumerable? Equipments { get; set; } // The list of equipment items
public int TotalCount { get; set; } // Total number of filtered items
public int CurrentPage { get; set; } // The current page number
public int TotalPages { get; set; } // Total number of pages
}
Код: Выделить всё
Equipments
all category
@foreach (var category in Model.Categories!)
{
@category.Name
}
price
priority
@await Component.InvokeAsync("EquipmentsList", new
{
categoryId = 0,
search = "",
sort = "Date",
page = 1,
pageSize = 10
})
@for (int i = 1; i = 3 || $(this).val().length === 0) {
loadEquipmentData(1); // Load data for the first page
}
});
$(document).off('click', '.page-link').on('click', '.page-link', function (e) {
e.preventDefault(); // Prevent default navigation behavior
const page = $(this).data('page');
loadEquipmentData(page); // Load data for the clicked page
});
});
}
Что вы предлагаете?
Подробнее здесь: https://stackoverflow.com/questions/793 ... azor-pages