@inject ILoginService LoginService
@inject NavigationManager Navigation
@inject IJSRuntime JSRuntime
<MudContainer MaxWidth="MaxWidth.Small" Class="d-flex justify-center align-center vh-100" @onkeydown="HandleKeyPress" tabindex="0">
<MudPaper Elevation="12" Class="pa-6 text-center" Width="100%" MaxWidth="400px">
<MudAvatar Size="Size.Large" Image="images/anh.jpg" Class="mb-3 mx-auto" />
<MudText Typo="Typo.h5" Class="mb-4 font-weight-bold text-primary">Đăng nhập hệ thống</MudText>
<MudTextField @bind-Value="username" Label="Tên đăng nhập" Variant="Variant.Filled" Adornment="Adornment.Start">
<MudIcon Icon="@Icons.Material.Filled.Person" />
<MudTextField @bind-Value="password" Label="Mật khẩu" Type="password" Variant="Variant.Filled" Adornment="Adornment.Start">
<MudIcon Icon="@Icons.Material.Filled.Lock" />
<MudButton OnClick="HandleLogin" Class="mt-4" Variant="Variant.Filled" Color="Color.Primary" FullWidth>
<MudIcon Icon="@Icons.Material.Filled.Login" Class="mr-2" /> Đăng nhập
@if (errorMessage != null)
<MudAlert Severity="Severity.Error" Class="mt-2">@errorMessage</MudAlert>
private string username = "";
private string password = "";
private string errorMessage;
private async Task HandleLogin()
if (await LoginService.Login(username, password))
Navigation.NavigateTo("/", forceLoad: true);
await JSRuntime.InvokeVoidAsync("alert", "Sai tài khoản hoặc mật khẩu!");
private async Task HandleKeyPress(KeyboardEventArgs e)