почему шаблон не работает для cshtml (razor) asp.net? - PullRequest
0 голосов
/ 02 октября 2018

Это мой cshtml-код для страницы регистрации:

<div class="form-group">
    <label asp-for="Input.Name"></label>
    <input asp-for="Input.Name" class="form-control" pattern="[A-Za-z{3}]" />
    <span asp-validation-for="Input.Name" class="text-danger"></span>
</div>

Это InputModel:

public class InputModel
{
    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 3)]
    [DataType(DataType.Text)]
    [Display(Name = "Name")]
    public string Name { get; set; }
}

При каждой отправке я получаю сообщение об ошибке из модели вводаоднако, если длина <3 или> 50, имена не могут содержать никаких специальных символов или цифр, как мне это сделать?Заранее спасибо!

1 Ответ

0 голосов
/ 02 октября 2018

Вы можете использовать атрибут проверки [RegularExpression] с регулярным выражением, в котором допускаются только буквы (от a до z и A до Z).

Пример:

public class InputModel
{
    [Required]
    [StringLength(50, ErrorMessage = "The {0} must be at least {2} and at max {1} characters long.", MinimumLength = 3)]
    [DataType(DataType.Text)]
    [Display(Name = "Name")]
    [RegularExpression(@"^[a-zA-Z]+$", "Please only enter letters")]
    public string Name { get; set; }
}

Но если вы действительно хотите использовать атрибут ввода pattern при вводе, вы допустили небольшую ошибку в вашем шаблоне:

<input asp-for="Input.Name" class="form-control" pattern="[A-Za-z{3}]" />

должно быть:

<input asp-for="Input.Name" class="form-control" pattern="[A-Za-z]{3}" />

Обратите внимание на небольшую разницу в расположении {3} (за пределами квадратных скобок).Обратитесь к этой документации для получения дополнительной информации: https://www.w3schools.com/tags/att_input_pattern.asp

...