验证是ASP.NET MVC应用程序中的一个重要方面.它用于检查用户输入是否有效. ASP.NET MVC提供了一组易于使用的验证,同时,它也是一种检查错误的强大方法,并在必要时向用户显示消息.
DRY代表不要重复自己,是ASP.NET MVC的核心设计原则之一.从开发的角度来看,鼓励仅在一个地方指定功能或行为,然后在整个应用程序中使用它.
这减少了代码量你需要编写并使你编写的代码更容易出错并且更容易维护.
让我们来看看上一章中我们项目中的一个简单验证示例.在这个例子中,我们将向我们的模型类添加数据注释,它提供了一些内置的验证属性集,可以直接应用于应用程序中的任何模型类或属性,例如 Required,StringLength,RegularExpression,和范围验证属性.
它还包含格式化属性,如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),如以下屏幕截图所示.
要在数据库上设置此限制,我们将使用迁移来更新架构.
打开Tools&rarr的Package Manager控制台窗口; NuGet Package Manager → 软件包管理器控制台.
输入以下内容在软件包管理器控制台窗口中逐个命令.
Enable-Migrations add-migration DataAnnotations update-database
以下是在Package Manager控制台窗口中执行这些命令后的日志.
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/Employees/Create
让我们在这些字段中输入一些无效数据,然后单击Create Button,如下面的屏幕截图所示.
您将看到jQuery客户端验证检测到错误,它还会显示错误消息.