Вот это часть моего кода:
Код: Выделить всё
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);
}
}
}
}
}
- Проверил, что свойство SelectedRole является строкой.
- Подтверждено, что AllRoles содержит правильные данные.
- Принудительно присвоено значение SelectedRole непосредственно перед условием if в методе SaveChanges, а остальная часть программы работает как положено, то есть проблема связана с тем, что InputSelect не обновляется SelectedRole.
Выбранная роль должна обновляться, когда новая роль выбирается из раскрывающегося списка, и правильная роль должна быть сохранена, когда изменения отправляются.
Фактическое поведение:
Выбранная роль не отражает новый выбор, и сохраненная роль остается первоначально загруженной ролью.
Как я могу гарантировать, что InputSelect правильно обновляет переменную SelectedRole?
Подробнее здесь: https://stackoverflow.com/questions/793 ... -component
Мобильная версия