在本節(jié)中將會(huì)給Movie模型添加驗(yàn)證邏輯。并且確保這些驗(yàn)證規(guī)則在用戶創(chuàng)建或編輯電影時(shí)被執(zhí)行。
拒絕重復(fù) DRYASP.NET MVC 的核心設(shè)計(jì)信條之一是DRY: "不要重復(fù)自己(DRY --Don’t Repeat Yourself)"。ASP.NET MVC鼓勵(lì)您指定功能或者行為,只做一次,然后將它應(yīng)用到應(yīng)用程序的各個(gè)地方。這可以減少您需要編寫的代碼量,并減少代碼出錯(cuò)率,易于代碼維護(hù)。 給ASP.NET MVC 和 Entity Framework Code First 提供驗(yàn)證支持是 DRY 信條的一次偉大實(shí)踐。您可以在一個(gè)地方 (模型類) 中以聲明的方式指定驗(yàn)證規(guī)則,這個(gè)規(guī)則會(huì)在應(yīng)用程序中的任何地方執(zhí)行。 讓我們看看您如何在本電影應(yīng)用程序中,使用此驗(yàn)證支持。 給電影模型添加驗(yàn)證規(guī)則您將首先向Movie類添加一些驗(yàn)證邏輯。 打開Movie.cs 文件,注意到System.Web 命名空間并未包含System.ComponentModel.DataAnnotations. DataAnnotations提供了一組內(nèi)置的嚴(yán)重屬性,可供您應(yīng)用于類、屬性。(DataAnnotations也包含一個(gè)DataType屬性,來(lái)幫助格式化的辦法來(lái)校驗(yàn)) 更新Movie類,以利用內(nèi)置的Required、 StringLength, RegularExpression和Range驗(yàn)證屬性。以下面的代碼為例,以應(yīng)用驗(yàn)證屬性。 復(fù)制代碼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; } }復(fù)制代碼 在StringLength屬性設(shè)置字符串的最大長(zhǎng)度,它會(huì)在數(shù)據(jù)庫(kù)上設(shè)置此限制,因此的數(shù)據(jù)庫(kù)schema將發(fā)生變化。右鍵單擊電影表, 在服務(wù)器資源管理器(Server explorer),然后單擊打開表定義(Open Table Definition): clip_image002 在上面的圖片中,你可以看到所有的字符串字段被設(shè)置為了NVARCHAR (MAX)數(shù)據(jù)類型. 我們將使用遷移來(lái)更新架構(gòu)。生成解決方案,然后打開軟件包管理器控制臺(tái)(the Package Manager Console ),輸入如下命令: add-migration DataAnno新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注