I want to do a register page using Blazor Server + Blazorise for UI. In my RegisterUserDto class i have fields with data annotations that should be displayed in UI:
public class RegisterUserDto{ [Required(ErrorMessage = "User name is required")] public string UserName { get; set; } = string.Empty; [Required(ErrorMessage = "Email is required")] [EmailAddress(ErrorMessage = "Invalid email format")] public string Email { get; set; } = string.Empty; [Required(ErrorMessage = "Password is required")] [MinLength(6, ErrorMessage = "Password must be at least 6 characters")] [DataType(DataType.Password)] public string Password { get; set; } = string.Empty;}Blazor page:
@page "/register"@using Application.Services@using Domain.DTOs@inject IUserService UserService@inject NavigationManager NavigationManager<h3>Register</h3><Validations Mode="ValidationMode.Auto" Model="@_registerUserDto" ValidateOnLoad><Validation><Field><FieldLabel RequiredIndicator>User Name</FieldLabel><FieldBody><TextEdit @bind-Text="@_registerUserDto.UserName"><Feedback><ValidationError /></Feedback></TextEdit></FieldBody></Field></Validation><Validation><Field><FieldLabel RequiredIndicator>Email</FieldLabel><FieldBody><TextEdit @bind-Text="@_registerUserDto.Email" Role="@TextRole.Email" InputMode="TextInputMode.Email"><Feedback><ValidationError /></Feedback></TextEdit></FieldBody></Field></Validation><Validation><Field><FieldLabel RequiredIndicator>Password</FieldLabel><FieldBody><TextEdit @bind-Text="@_registerUserDto.Password" Role="@TextRole.Password"><Feedback><ValidationError /></Feedback></TextEdit></FieldBody></Field></Validation><Field><Button Type="@ButtonType.Submit" Color="Color.Primary" Loading="_isLoading">Register</Button></Field></Validations>@code { readonly RegisterUserDto _registerUserDto = new(); bool _isLoading = false; private async Task RegisterUser() { _isLoading = true; var result = await UserService.CreateAsync(_registerUserDto); _isLoading = false; if (result) { NavigationManager.NavigateTo("/login"); } else { //TODO }; }}Problem is that Blazor knows about data annotations but doesn't seem to check the values inside TextEdit and compare them to validation rules:
Read docs, tried to do exactly as said, didn't work