ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证
在前面的創建專輯與編輯專輯的表單中存在一個問題:我們沒有進行任何驗證。字段的內容可以不輸入,或者在價格的字段中輸入一些字符,在執行程序的時候,這些錯誤會導致數據庫保存過程中出現錯誤,我們將會看到來自數據庫的錯誤信息。
通過為模型類增加數據描述的 DataAnnotations ,我們可以容易地為應用程序增加驗證的功能。DataAnnotations? 允許我們描述希望應用在模型屬性上的驗證規則,ASP.NET MVC 將會使用這些 DataAnnotations ,然后將適當的驗證信息返回給用戶。
為專輯表單增加驗證
我們將會使用下列的 DataAnnotations
- Required 必須 – 表示這個屬性是必須提供內容的字段
- DisplayName 顯示名 – 定義表單字段的提示名稱
- StringLength 字符串長度 – 定義字符串類型的屬性的最大長度
- Range 范圍 – 為數字類型的屬性提供最大值和最小值
- Bind 綁定 – 列出在將請求參數綁定到模型的時候,包含和不包含的字段
- ScaffoldColumn 支架列 - 在編輯表單的時候,需要隱藏起來的的字符
注意:更多關于模型驗證的信息,請參考:http://msdn.microsoft.com/zh-cn/library/ee256141%28VS.100%29.aspx
打開 Album 類,首先增加下面的 using 語句,這些語句引用了 DataAnnotations? 使用的命名空間。
using System.ComponentModel;using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;
?
然后,更新屬性,增加顯示和驗證的 DataAnnotations
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; }
[Required(ErrorMessage = "Price is required")]
[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; }
}
}
?
然后,將專輯 Album 的屬性 Genre 和 Artist 設置為虛擬的 virtual ,這將會使 EF-Code First 使用延遲加載。
public virtual Genre Genre { get; set; }public virtual Artist Artist { get; set; }
?
為專緝修改完成之后,我們的創建和編輯界面立即就會驗證字段,并且使用我們提供的顯示名稱,例如? AlbumArtUrl 將會成為 Album Art URL 等等。運行程序,瀏覽 /StoreManager/Create.
下一步,我們特意輸入一些破壞驗證規則的數據,在價格字段中輸入 0, 將標題字段的內容保留為空白,當我們點擊創建的時候,我們將會看到表單中不符合驗證規則的字段顯示了驗證的錯誤提示信息。
測試客戶端驗證
對于應用程序來說,服務器端驗證非常重要,因為用戶可能繞過了客戶端驗證,實際上,Web 頁面僅僅實現服務器端驗證存在三個顯著的問題:
幸運的是,ASP.NET MVC3 支架模板還提供了內建的客戶端驗證,不需要我們做額外的工作就可以使用。
在必須輸入的標題字段中輸入一個字符,驗證的錯誤提示信息立即就消失了。
這里,我們要注意幾點:
頁面中已經引用了 jQuery 的腳本。
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script><script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
在 web.config 中,已經默認支持了客戶端驗證。
<appSettings><add key="ClientValidationEnabled" value="true"/>
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
</appSettings>
?
?
轉載于:https://www.cnblogs.com/uppercloud/p/MVCMusicStore_7.html
總結
以上是生活随笔為你收集整理的ASP.NET MVC 音乐商店 - 6. 使用 DataAnnotations 进行模型验证的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java中删除一个文件夹下的所有文件(包
- 下一篇: 安卓客户端测试总结