Пользовательский интерфейс показывает устаревшие данные после редактирования имени категории (правильная база данных)C#

Место общения программистов C#
Anonymous
Пользовательский интерфейс показывает устаревшие данные после редактирования имени категории (правильная база данных)

Сообщение Anonymous »

Обзор проекта < /strong>

Я пытаюсь сделать веб -магазин для школьного проекта с помощью Blazor Server /Web App. Все, что у меня есть сейчас, - это страница для входа /регистрации и обзор, в котором пользователь (администратор) может добавлять, удалять или редактировать категории. < /P>
проблема < /strong>

Проблема заключается в том, чтобы при редактировании категории пользователь не должен иметь возможность изменить имя категории в уже существующую категорию. Это работает на бэкэнд -стороне, при отправке изменения в существующую имени категории пользователь получает ошибку, а имя категории не изменяется в базе данных. Однако, когда затем перейти к обзору категории, это показывает изменение, поэтому вы видите одно и то же имя категории дважды. При перезагрузке страницы проблема исправлена. /> Если кто -то мог бы помочь, это было бы здорово, мои учителя не знают. Также, пожалуйста, дайте мне знать, если я не предоставил достаточно/правильной информации! Спасибо за ваше время!@page "/edit-category"
@page "/edit-category/{Id:int}"
@inject ICategoryService CategoryService
@inject NavigationManager NavigationManager
@rendermode @(new InteractiveServerRenderMode(prerender: false))
@attribute [Authorize(Roles = "Administrator")]

@if (Id is null)
{
Categorie toevoegen
Categorie toevoegen
}
else
{
@OriginalCategoryName aanpassen
@OriginalCategoryName aanpassen
}



Name


Omschrijving


@errorMessage

Save


@code {
[Parameter]
public int? Id { get; set; }

public Category CurrentCategory { get; set; } = new();

private string? errorMessage;
private string? OriginalCategoryName;

protected override async Task OnParametersSetAsync()
{
if (Id is not null)
{
var category = await CategoryService.GetCategoryByIdAsync((int)Id);
if (category is not null)
{
CurrentCategory = category;
OriginalCategoryName = category.Name;
}
}
}

async Task HandleSubmit()
{
if (string.IsNullOrWhiteSpace(CurrentCategory.Name))
{
errorMessage = "De categorienaam mag niet leeg zijn.";
await ResetCategory();
}
else if (await CategoryService.CategoryExists(CurrentCategory.Name))
{
errorMessage = "Deze categorie bestaat al.";
await ResetCategory();
} else
{
if (Id is not null)
{
// Update
await CategoryService.UpdateCategoryAsync(CurrentCategory, (int)Id);
NavigationManager.NavigateTo("/categories", true);
}
else
{
// Add
await CategoryService.AddCategoryAsync(CurrentCategory);
NavigationManager.NavigateTo("/categories", true);
}
}
}

private async Task ResetCategory()
{
if (Id is not null)
{
var category = await CategoryService.GetCategoryByIdAsync((int)Id);
if (category is not null)
{
CurrentCategory = category;
}
}
else
{
CurrentCategory = new();
}

StateHasChanged();
}
}

страница обзора категории

@page "/categories"
@inject ICategoryService CategoryService
@inject NavigationManager NavigationManager
@rendermode @(new InteractiveServerRenderMode(prerender: false))
@attribute [Authorize(Roles = "Administrator")]

Categorieën
Categorieën

@if (categories.Count == 0)
{
Loading categories...
}
else
{



Naam
Beschrijving (optioneel)





@foreach (var category in categories)
{

@category.Name
@category.Description
Aanpassen
Verwijderen

}



Categorie toevoegen
}

@code {
List categories = new List();

protected override async Task OnInitializedAsync()
{
categories = await CategoryService.GetAllCategoriesAsync();
}

void EditCategory(int? id)
{
NavigationManager.NavigateTo($"/edit-category/{id}");
}

async Task DeleteCategory(int id)
{
await CategoryService.DeleteCategoryAsync(id);
categories = await CategoryService.GetAllCategoriesAsync();
}

void AddCategory()
{
NavigationManager.NavigateTo($"/edit-category");
}

}


Подробнее здесь: https://stackoverflow.com/questions/795 ... se-correct

Вернуться в «C#»