У меня есть страница Razor, в которой есть тег для распечатки сообщения об ошибке, а также распечатывается значение ModelState.IsValid
.
@page
@model IndexModel
<form asp-page="Index" method="get">
<input asp-for="Message"/>
<span asp-validation-for="Message"></span>
<input type="submit" value="Submit"/>
</form>
<p>ModelState.IsValid = @Model.ModelIsValid</p>
PageModel помечается требованием регулярного выражения:
public class IndexModel : PageModel
{
[FromQuery]
[RegularExpression("^[A-Za-z]*$")]
public string Message { get; set; }
public bool ModelIsValid { get; private set; }
public void OnGet()
{
ModelIsValid = ModelState.IsValid;
}
}
Модель всегда действительна, независимо от того, что я установил Message
или не добавлял ее вообще.
NB Message
правильнозаполнены.
NB 2 Ни добавление [Required(AllowEmptyStrings = false)]
, ни замена [FromQuery]
на [BindProperty(SupportsGet = true)]
не изменяет поведение.
Почему мои аннотации не эффективны?
Я поделился полным проектом здесь: https://1drv.ms/u/s!Au6otEu-6FtC2VFoLNCTDydGUSIR