Перейти к содержанию

Тег-хелперы сообщений валидации и сводки сообщений

Мы уже видели, как тег-хелпер <input> генерирует атрибуты валидации data-val-*. Однако для того, чтобы отображать сообщения проверки, нужно воспользоваться тег-хелпером для тега <span>, используя для этого атрибут asp-validation-for:

<span asp-validation-for="Email"></span>

когда ошибка возникает на стороне клиента, сообщение будет отображаться в соответствующем теге <span>. Если валидация на стороне сервера1 завершиться неудачей, этот же элемент будет использоваться для отображения сообщений валидации.


Помимо отображения сообщений валидации для отдельных свойств, можно отобразить сводку всех сообщений в элементе <div> с помощью тег-хелпера Validation Summary:

<div asp-validation-summary="All"></div>

Возможно три значения:

  • None — не отображать;
  • ModelOnly — отображать ошибки, не ассоциированные со каким-либо свойством;
  • All — отображать ошибки, ассоциированные со свойством, либо с моделью.

Тег-хелпер сводки особенно полезен, если возможны ошибки, не связанные с конкретным свойством. Их можно добавить к состоянию модели, используя пустой ключ:

public class ConverModel : PageModel
{
    [BindProperty]
    public InputModel Input { get; set; }

    [HttpPost]
    public IActionResult OnPost()
    {
        if(Input.CurrencyFrom == Input.CurrencyTo)
        {
            ModelState.AddModelError(string.Empty, "Cannot convert currency to itself");
        }
        if(!ModelState.IsValid)
        {
            return Page();
        }

        //Ошибок нет, сохраняем введенные значения...

        return RedirectToPage("Checkout");
    }
}

Без тег-хелпера сводки ошибка не была бы отображена, и пользователю не было бы понятно, в чём она заключается.


  1. О валидации на стороне сервера см. здесь


Последнее обновление : 21 апреля 2023 г.
Дата создания : 27 сентября 2022 г.

Комментарии

Комментарии