Диалоговое окно входа в MudBlazor: чтобы войти в систему, необходимо дважды нажать клавишу Enter.C#

Место общения программистов C#
Anonymous
Диалоговое окно входа в MudBlazor: чтобы войти в систему, необходимо дважды нажать клавишу Enter.

Сообщение Anonymous »

Я использую C#/.NET 9 и MudBlazor и реализовал диалоговое окно входа в систему с полями имени пользователя и пароля.
Вход работает нормально, за исключением того, что мне приходится дважды нажать «Ввод», прежде чем диалоговое окно закроется и произойдет вход в систему.
Что я пробовал до сих пор
  • Сделал HandleKeyDown async
  • Переключился с OnKeyDown на OnKeyUp
  • Пытался использовать @bind-Value:event="oninput" в поле пароля. Затем Enter вообще не срабатывал.
  • Попытка использовать MudForm внутри DialogContent.
LoginDialog.razor
@inject IDialogService DialogService
@inject ProjectName.Components.Services.UserState UserStateService
@using ProjectName.Data.User;
@using Microsoft.AspNetCore.Components
@using MudBlazor





Login







Log in
Cancel



@code {
[Parameter] public bool IsDarkMode { get; set; }
[CascadingParameter]
private IMudDialogInstance? MudDialog { get; set; }
private string _username = string.Empty;
private string _password = string.Empty;

private void CloseDialog()
{
MudDialog?.Close(DialogResult.Ok(true));
}

private void CancelDialog()
{
MudDialog?.Cancel();
}

internal async Task PerformLogin()
{
Data.User.User? loggedInUser = await Data.User.Loader.ReadUsersForLogin(_username, _password);
if (loggedInUser != null)
{
UserStateService.SetUser(loggedInUser);
CloseDialog();
}
}

private async void HandleKeyDown(KeyboardEventArgs e)
{
if (e.Key == "Enter" && !string.IsNullOrEmpty(_password))
{
await PerformLogin();
}
}

private async Task HandleKeyUp(KeyboardEventArgs e)
{
if (e.Key == "Enter" && !string.IsNullOrEmpty(_password))
{
await PerformLogin();
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/797 ... ogin-works

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