Hier ist es Teil meines Codes:
Code: Select all
Nome
Email
Selecionar Role:
Nenhum
@foreach (var role in AllRoles)
{
@role.Name
}
Selected Role: @SelectedRole
[img]/img/saveicon.png[/img]
[url=/GereUsers]
[img]/img/backicon.png[/img]
[/url]
}
@DebugMessage
@code {
[SupplyParameterFromQuery]
private string? Id { get; set; }
private ApplicationUser? User;
private List AllRoles = new();
private string? SelectedRole;
private string DebugMessage { get; set; } = "Inicializando...";
protected override async Task OnInitializedAsync()
{
if (Id is not null)
{
User = await UserManager.FindByIdAsync(Id);
if (User is null)
{
DebugMessage = "Usuário não encontrado.";
NavigationManager.NavigateTo("/notfound");
return;
}
AllRoles = RoleManager.Roles.ToList();
var roles = await UserManager.GetRolesAsync(User);
SelectedRole = roles.FirstOrDefault() ?? "-1";
}
}
private async Task SaveChanges()
{
if (User is not null)
{
if (string.IsNullOrEmpty(SelectedRole) || SelectedRole == "-1")
{
var currentRoles = await UserManager.GetRolesAsync(User);
await UserManager.RemoveFromRolesAsync(User, currentRoles);
}
else
{
var currentRoles = await UserManager.GetRolesAsync(User);
var rolesToRemove = currentRoles.Where(r => r != SelectedRole).ToList();
await UserManager.RemoveFromRolesAsync(User, rolesToRemove);
if (!currentRoles.Contains(SelectedRole))
{
await UserManager.AddToRoleAsync(User, SelectedRole);
}
}
}
}
}
- Überprüft, dass die SelectedRole-Eigenschaft eine Zeichenfolge ist.
- Bestätigt, dass AllRoles die richtigen Daten enthält.
- Ein Wert für SelectedRole direkt vor der if-Bedingung in der SaveChanges-Methode erzwungen, und der Rest des Programms funktioniert wie erwartet, d. h Das Problem ist darauf zurückzuführen, dass InputSelect nicht aktualisiert wird SelectedRole.
Die SelectedRole sollte aktualisiert werden, wenn eine neue Rolle aus der Dropdown-Liste ausgewählt wird, und die richtige Rolle sollte dabei gespeichert werden Änderungen werden übermittelt.
Tatsächliches Verhalten:
Die SelectedRole spiegelt nicht die neue Auswahl wider und die gespeicherte Rolle bleibt die ursprünglich geladene Rolle.
Wie kann ich sicherstellen, dass die InputSelect aktualisiert die SelectedRole-Variable ordnungsgemäß?