InputSelect @bind-Value не обновляется в компоненте BlazorC#

Место общения программистов C#
Ответить
Anonymous
 InputSelect @bind-Value не обновляется в компоненте Blazor

Сообщение Anonymous »

У меня есть компонент Blazor, в котором я использую InputSelect, чтобы позволить пользователям выбирать роль для пользователя. Проблема в том, что @bind-Value InputSelect не обновляет переменную SelectedRole должным образом. Когда я пытаюсь сохранить изменения, сохраняется роль, выбранная изначально, а не та, которая выбрана в раскрывающемся списке.
Вот это часть моего кода:

Код: Выделить всё







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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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