В Blazor EditForm отсутствуют электронная почта и телефон?

#blazor-server-side

#blazor-на стороне сервера

Вопрос:

Есть ли в EditForm средство проверки для электронных писем и номера телефона, например, в форме (например) «tel» для телефона и «email» для электронных писем.

Несмотря на то, что они проверяют форматирование на отсутствие телефона и электронной почты.

Ответ №1:

Да, что я сделал, так это; создайте общедоступный класс и свяжите его с editform. Используя выражения регулярных выражений, вы можете создать свою собственную проверку.

     public class RegisterAccountModel
        {
            [Required(AllowEmptyStrings = false, ErrorMessage = "Email adres Missing")]
            [EmailAddress(ErrorMessage = "Unvalid Email Address")]
            public string Email { get; set; }
    
            [Required(AllowEmptyStrings = false, ErrorMessage = "Paswoord Missing")]
            [DataType(DataType.Password)]
            [StringLength(100)] //, ErrorMessage = "Paswoord dient minstens {2} characters te bevatten waaronder minstens één nummer.", MinimumLength = 6)]
            [Display(Name = "Paswoord")]
            [RegularExpression("^()(?=.*[\d])(?=.*[a-z])(?=.*[a-zA-Z]).{6,}$", ErrorMessage = "Min 6 characters and 1 capital letter.")]
            public string Password { get; set; }
    
            [Required(AllowEmptyStrings = false, ErrorMessage = "Paswoord not Matching")]
            [Compare(nameof(Password), ErrorMessage = "Paswoord not Matching")]
            public string ConfirmPassword { get; set; }
    
            [Required(AllowEmptyStrings = false, ErrorMessage = "Company Is Empty")]
            public string Bedrijfsnaam { get; set; }
    
            [Required(AllowEmptyStrings = false, ErrorMessage = "Name is empty)]
            public string Naam { get; set; }
    
        }
  

Если вы хотите использовать этот класс в своей форме редактирования, вы можете сделать :

     <EditForm Context="NewUser" OnSubmit="FormSubmitted" Model="registerAccountModel">
       <div class="DataValidationRemark">@RegisterRemarks</div>
         <DataAnnotationsValidator />
         <ValidationSummary />
    <table>
       <tr>
          <td><p class="label">Email:</p></td>
          <td><p><InputText @bind-Value="registerAccountModel.Email" /></p></td>
       </tr>
       <tr>
           <td><p class="label">@lblPassword :</p></td>
           <td><p><input type="password" @bind-value="registerAccountModel.Password" /</p></td> 
       </tr>
    </EditForm>
  

Что касается отправки: это должно быть на вашей странице razor. или код за файлом.

     @code {
    private RegisterAccountModel registerAccountModel = new RegisterAccountModel();

    public void FormSubmitted(EditContext editContext)
    {
    
        isValidated = editContext.Validate();
    
        if (isValidated)
        {
            Task.Run(() => RegisterUser());
    
        }
    
    }
  

Что касается пользователя регистрации: все еще на той же странице razor

     private async Task RegisterUser()
    {
        //If the form validation is done
        if (isValidated)
        {
            var result = await userManager.CreateAsync(new IdentityUser { UserName = registerAccountModel.Email, Email = registerAccountModel.Email, EmailConfirmed = false }, registerAccountModel.Password);
    
            if (result.Succeeded)
            {
                //DO STUFF
            }
         }
        }
      }
  

Дайте мне знать, сработало ли это для вас или вы застряли.

С уважением,

Матиас