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

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

Сообщение Anonymous »

Я использую C#/.NET 9 и MudBlazor и реализовал диалоговое окно входа в систему с полями имени пользователя и пароля.
Вход работает нормально, за исключением того, что мне приходится дважды нажимать «Ввод», прежде чем диалоговое окно закроется и произойдет вход в систему.

Что я пробовал до сих пор

1. Сделан `HandleKeyDown` асинхронным

2. Переключен с «OnKeyDown» на «OnKeyUp»

3. Попробовал использовать @bind-Value:event="oninput"` в поле пароля. Тогда Enter вообще не срабатывал.

4. Попытка использовать 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
Ответить

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

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

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

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

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