Вход работает нормально, за исключением того, что мне приходится дважды нажимать «Ввод», прежде чем диалоговое окно закроется и произойдет вход в систему.
Что я пробовал до сих пор
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
Мобильная версия