在本節中將會給Movie模型添加驗證邏輯。并且確保這些驗證規則在用戶創建或編輯電影時被執行。
拒絕重復 DRYASP.NET MVC 的核心設計信條之一是DRY: "不要重復自己(DRY --Don’t Repeat Yourself)"。ASP.NET MVC鼓勵您指定功能或者行為,只做一次,然后將它應用到應用程序的各個地方。這可以減少您需要編寫的代碼量,并減少代碼出錯率,易于代碼維護。 給ASP.NET MVC 和 Entity Framework Code First 提供驗證支持是 DRY 信條的一次偉大實踐。您可以在一個地方 (模型類) 中以聲明的方式指定驗證規則,這個規則會在應用程序中的任何地方執行。 讓我們看看您如何在本電影應用程序中,使用此驗證支持。 給電影模型添加驗證規則您將首先向Movie類添加一些驗證邏輯。 打開Movie.cs 文件,注意到System.Web 命名空間并未包含System.ComponentModel.DataAnnotations. DataAnnotations提供了一組內置的嚴重屬性,可供您應用于類、屬性。(DataAnnotations也包含一個DataType屬性,來幫助格式化的辦法來校驗) 更新Movie類,以利用內置的Required、 StringLength, RegularExpression和Range驗證屬性。以下面的代碼為例,以應用驗證屬性。 復制代碼public class Movie { public int ID { get; set; } [StringLength(60, MinimumLength = 3)] public string Title { get; set; } [Display(Name = "Release Date")] [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime ReleaseDate { get; set; } [RegularExpression(@"^[A-Z]+[a-zA-Z''-'s]*$")] [Required] [StringLength(30)] public string Genre { get; set; } [Range(1, 100)] [DataType(DataType.Currency)] public decimal Price { get; set; } [RegularExpression(@"^[A-Z]+[a-zA-Z''-'s]*$")] [StringLength(5)] public string Rating { get; set; } }復制代碼 在StringLength屬性設置字符串的最大長度,它會在數據庫上設置此限制,因此的數據庫schema將發生變化。右鍵單擊電影表, 在服務器資源管理器(Server explorer),然后單擊打開表定義(Open Table Definition): clip_image002 在上面的圖片中,你可以看到所有的字符串字段被設置為了NVARCHAR (MAX)數據類型. 我們將使用遷移來更新架構。生成解決方案,然后打開軟件包管理器控制臺(the Package Manager Console ),輸入如下命令: add-migration DataAnno新聞熱點
疑難解答