Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Хранилище музыки MVC — это учебное приложение, которое представляет и описывает пошаговые инструкции по использованию ASP.NET MVC и Visual Studio для веб-разработки.
MVC Music Store — это упрощенная реализация магазина, которая продает музыкальные альбомы в Интернете и реализует базовые функции администрирования сайтов, входа пользователей и корзины покупок.
В этой серии учебников подробно описаны все шаги, описанные для создания примера приложения MVC Music Store ASP.NET. Часть 6 охватывает использование заметок данных для проверки модели.
У нас есть основная проблема с формами создания и редактирования: они не выполняют никаких проверок. Мы можем сделать такие действия, как оставить обязательные поля пустыми или ввести буквы в поле "Цена", и первая ошибка будет от базы данных.
Мы можем легко добавить проверку в наше приложение, добавив аннотации данных к нашим классам моделей. Заметки данных позволяют описать правила, которые мы хотим применить к свойствам модели, и ASP.NET MVC будет заботиться о применении и отображении соответствующих сообщений для наших пользователей.
Добавление валидации в формы альбома
Мы будем использовать следующие атрибуты аннотации данных:
- Обязательный— указывает, что свойство является обязательным полем
- DisplayName — определяет текст для использования в полях формы и сообщениях проверки
- StringLength — определяет максимальную длину для строкового поля
- Диапазон — предоставляет максимальное и минимальное значение для числового поля
- Привязка — перечисляет поля для исключения или включения при привязке параметров или значений формы к свойствам модели
- ScaffoldColumn — позволяет скрывать поля из форм редактора
Примечание. Дополнительные сведения о проверке модели с помощью атрибутов аннотации данных см. в документации MSDN по https://go.microsoft.com/fwlink/?LinkId=159063
Откройте класс "Альбом" и добавьте следующие инструкции using в начало.
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
Затем обновите свойства, чтобы добавить атрибуты отображения и проверки, как показано ниже.
namespace MvcMusicStore.Models
{
[Bind(Exclude = "AlbumId")]
public class Album
{
[ScaffoldColumn(false)]
public int AlbumId { get; set; }
[DisplayName("Genre")]
public int GenreId { get; set; }
[DisplayName("Artist")]
public int ArtistId { get; set; }
[Required(ErrorMessage = "An Album Title is required")]
[StringLength(160)]
public string Title { get; set; }
[Range(0.01, 100.00,
ErrorMessage = "Price must be between 0.01 and 100.00")]
public decimal Price { get; set; }
[DisplayName("Album Art URL")]
[StringLength(1024)]
public string AlbumArtUrl { get; set; }
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
}
}
В процессе работы мы также изменили жанр и исполнителя на виртуальные свойства. Это позволяет Entity Framework отложенно загружать их по мере необходимости.
public virtual Genre Genre { get; set; }
public virtual Artist Artist { get; set; }
После добавления этих атрибутов в нашу модель альбома, наш экран создания и редактирования немедленно начнет проверку полей и использование выбранных нами отображаемых имен (например, URL-адрес изображения альбома вместо AlbumArtUrl). Запустите приложение и перейдите к /StoreManager/Create.
Затем мы нарушим некоторые правила проверки. Введите цену 0 и оставьте поле "Заголовок пустым". Щелкнув кнопку "Создать", мы увидим форму, отображаемую с сообщениями об ошибках проверки, показывающими, какие поля не соответствуют определенным правилам проверки.
Тестирование клиентской валидации на стороне клиента
Проверка на стороне сервера очень важна с точки зрения приложения, так как пользователи могут обойти проверку на стороне клиента. Однако формы веб-страниц, которые реализуют только проверку на стороне сервера, демонстрируют три существенных проблемы.
- Пользователь должен ждать отправки формы, проверки на сервере и отправки ответа в браузер.
- Пользователь не получает немедленной обратной связи, когда он исправляет поле так, чтобы оно соответствовало правилам проверки.
- Мы тратим ресурсы сервера для выполнения логики проверки вместо использования браузера пользователя.
К счастью, шаблоны ASP.NET MVC 3 имеют встроенную проверку на стороне клиента и не требуют никакой дополнительной работы.
Ввод одной буквы в поле "Заголовок" соответствует требованиям проверки, поэтому сообщение проверки немедленно удаляется.