InputSelect @bind-Value wird in der Blazor-Komponente nicht aktualisiertC#

Ein Treffpunkt für C#-Programmierer
Guest
 InputSelect @bind-Value wird in der Blazor-Komponente nicht aktualisiert

Post by Guest »

Ich habe eine Blazor-Komponente, in der ich einen InputSelect verwende, um Benutzern die Auswahl einer Rolle für einen Benutzer zu ermöglichen. Das Problem besteht darin, dass der @bind-Value von InputSelect die SelectedRole-Variable nicht wie erwartet aktualisiert. Wenn ich versuche, die Änderungen zu speichern, wird die ursprünglich ausgewählte Rolle gespeichert, nicht die im Dropdown-Menü.
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);
}
}

}
}

}
Was ich versucht habe:
  • Ü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.
Erwartetes Verhalten:
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äß?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post