#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
}
}
}
}
Дайте мне знать, сработало ли это для вас или вы застряли.
С уважением,
Матиас