Валидация является важным аспектом в приложениях ASP.NET MVC. Он используется для проверки правильности ввода пользователя. ASP.NET MVC предоставляет простой в использовании набор средств проверки, и в то же время он также является мощным средством проверки на наличие ошибок и, при необходимости, отображения сообщений для пользователя.
DRY
DRY означает « Не повторяй себя» и является одним из основных принципов проектирования ASP.NET MVC. С точки зрения разработки рекомендуется указывать функциональность или поведение только в одном месте, а затем использовать его во всем приложении из этого одного места.
Это уменьшает объем кода, который вам нужно написать, и делает код, который вы пишете, менее подверженным ошибкам и более простым в обслуживании.
Добавление валидации в модель
Давайте посмотрим на простой пример проверки в нашем проекте из последней главы. В этом примере мы добавим аннотации данных в наш класс модели, который предоставляет некоторый встроенный набор атрибутов проверки, которые могут быть применены к любому классу модели или свойству непосредственно в вашем приложении, таких как атрибуты Required, StringLength, RegularExpression и Range validation.
Он также содержит атрибуты форматирования, такие как DataType, которые помогают с форматированием и не обеспечивают никакой проверки. Атрибуты проверки определяют поведение, которое вы хотите применить к свойствам модели, к которым они применяются.
Атрибуты Required и MinimumLength указывают, что свойство должно иметь значение; но ничто не мешает пользователю войти в пустое пространство, чтобы удовлетворить эту проверку. Атрибут RegularExpression используется для ограничения того, какие символы можно вводить.
Давайте обновим класс Employee, добавив различные атрибуты аннотаций, как показано в следующем коде.
using System; using System.ComponentModel.DataAnnotations; using System.Data.Entity; namespace MVCSimpleApp.Models { public class Employee{ public int ID { get; set; } [StringLength(60, MinimumLength = 3)] public string Name { get; set; } [Display(Name = "Joining Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime JoiningDate { get; set; } [Range(22, 60)] public int Age { get; set; } } }
Теперь нам также нужно установить ограничения для базы данных. Однако база данных в обозревателе объектов SQL Server показывает, что для свойства name установлено значение NVARCHAR (MAX), как показано на следующем снимке экрана.
Чтобы установить это ограничение для базы данных, мы будем использовать миграции для обновления схемы.
Откройте окно консоли диспетчера пакетов в меню Инструменты → Диспетчер пакетов NuGet → Консоль диспетчера пакетов.
Введите следующие команды одну за другой в окне консоли диспетчера пакетов .
Enable-Migrations add-migration DataAnnotations update-database
Ниже приведен журнал после выполнения этих команд в окне консоли диспетчера пакетов.
Visual Studio также откроет класс, производный от класса DbMIgration, в котором вы можете увидеть код, который обновляет ограничения схемы в методе Up .
namespace MVCSimpleApp.Migrations { using System; using System.Data.Entity.Migrations; public partial class DataAnnotations : DbMigration{ public override void Up(){ AlterColumn("dbo.Employees", "Name", c => c.String(maxLength: 60)); } public override void Down(){ AlterColumn("dbo.Employees", "Name", c => c.String()); } } }
Максимальная длина поля «Имя» составляет 60, что соответствует новым ограничениям длины в базе данных, как показано на следующем снимке.
Запустите это приложение и перейдите к представлению «Создать», указав следующий URL-адрес http: // localhost: 63004 / Сотрудники / Создать
Давайте введем некоторые неверные данные в эти поля и нажмите кнопку «Создать», как показано на следующем снимке экрана.
Вы увидите, что проверка на стороне клиента jQuery обнаруживает ошибку, а также отображает сообщение об ошибке.