Сортировка списка < /code> из поля модели класса данных в нисходящем порядке не работает, как и ожидалось. Модель класса данных: < /p>
Код: Выделить всё
[Keyless]
public class SimulateImg
{
[Required]
public List ImgList { get; set; } = [];
}
Вот как я использую эту модель класса данных на своей странице бритвы: < /p>
@page "/to-my-page"
@rendermode InteractiveServer
@using Microsoft.EntityFrameworkCore
@using MyProject.Models.SQLServer
@using MyProject.Data.SQLServer
@implements IAsyncDisposable
@inject IDbContextFactory DbFactory
@inject NavigationManager NavigationManager
@inject IJSRuntime JS
Product
@if (simulateImg.ImgList is not null)
{
@foreach (var img in simulateImg.ImgList)
{
}
}
Save
role="alert" aria-live="assertive" aria-atomic="true" data-bs-delay="1500">
New records created successfully!
class="toast align-items-center text-bg-danger border-0 position-fixed bottom-0 end-0 mb-3 me-3" role="alert"
aria-live="assertive" aria-atomic="true" data-bs-delay="3000">
Someting went wrong: "@errorMessage". Please try again later.
window.showLiveToast = () => {
const toastEl = document.getElementById('liveToast');
if (toastEl) {
const toast = bootstrap.Toast.getOrCreateInstance(toastEl);
toast.show();
toastEl.addEventListener('hidden.bs.toast', () => {
window.location.replace('/to-other-page');
});
}
};
window.showLiveToastError = () => {
const toastEl = document.getElementById('liveToastError');
if (toastEl) {
const toast = bootstrap.Toast.getOrCreateInstance(toastEl);
toast.show();
}
};
@code {
[SupplyParameterFromForm]
private SimulateImg simulateImg { get; set; } = new();
private SQLServerContext context = default!;
private string? output;
private string? errorMessage;
protected override void OnInitialized()
{
context = DbFactory.CreateDbContext();
}
private async Task HandleImageListUpload(InputFileChangeEventArgs e)
{
long maxAllowedSize = 3L * 1024L * 1024L; //3 MB limit
int maxFileCount = 8;
try
{
foreach (var file in e.GetMultipleFiles(maxFileCount))
{
using var readStream = file.OpenReadStream(maxAllowedSize);
using var memoryStream = new MemoryStream();
await readStream.CopyToAsync(memoryStream);
var base64 = Convert.ToBase64String(memoryStream.ToArray());
simulateImg.ImgList.Add($"data:{file.ContentType};base64,{base64}");
simulateImg.ImgList.Reverse();
}
}
catch (IOException ex)
{
errorMessage = ex.Message;
simulateImg.ImgList.Clear();
await JS.InvokeVoidAsync("showLiveToastError");
}
catch (Exception ex)
{
errorMessage = ex.Message;
simulateImg.ImgList.Clear();
await JS.InvokeVoidAsync("showLiveToastError");
}
}
private async Task SimulateImageList()
{
// This is how I save the images to the database. At the moment, it is in pending features status.
}
private void DisposeToastThenNavigate()
{
NavigationManager.NavigateTo("/to-other-page", replace: true);
}
public async ValueTask DisposeAsync() // this is important
{
await context.DisposeAsync();
}
}
< /code>
Примечание для будущих читателей: код имеет недостаточную обработку данных, особенно в сборе списков изображений и проверки данных. Например, если пользователь уже выбрал максимум 8 элементов и добавляет одно изображение, новое изображение должно заменить последний или первый элемент в списке, либо пользователь должен быть проинформирован о том, что ограничение составляет всего 8 элементов. К сожалению, это не ведет себя так. Я бы признателен, если бы кто -то рассмотрел ответ на эту часть. < /P>
, с другой стороны, если я проверю программу с этим хронологическим порядком изображений: < /p>
pli>gadget_demo_image_330x330_1.pnggadget_demo_image_330x330_1. />[*]gadget_demo_image_330x330_2.png
[*]gadget_demo_image_330x330_3.png
[*]gadget_demo_image_330x330_4.png />[*]gadget_demo_image_330x330_5.png
< /ol>
Более того, имя файла будет отброшено, и я ожидал, что список элементов будет отсортирован на основе их исходного расположения; Это главная причина, по которой я использовал числовой порядок списка вместо пули. src = "https://i.sstatic.net/jt0hx2mf.png"/>
горизонтально обернутый
premang. /> это показывает, что у меня нет проблем с макетом переднего дня. < /p>Я ожидал, что программа сортирует список от 5 до 1.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ding-order