ASP.NET MVC Music Store教程(6):使用資料註解為模型進行驗證

來源:互聯網
上載者:User

轉自http://firechun.blog.163.com/blog/static/31804522201103133832931/

在Edit和Create表單中有一個很嚴重的問題:沒有做任何驗證。我們可以試一下讓必要欄位為空白或者在價格欄位中輸入字母,我們將會看到一個來自資料庫的錯誤。

為應用程式的模型類添加資料註解(Data Annotations)讓我們對資料進行驗證變得很容易,資料註解可以讓我們描述要應用到模型屬性上的規則,ASP.NET MVC會強制應用這些規則並顯示恰當的訊息給使用者。

為Album表單添加驗證

我們將使用下列資料註解特性:

  • Required——表示該欄位為必要欄位
  • DisplayName——定義我們要顯示在表單欄位和驗證資訊中出現的文本
  • StringLength——為字串屬性定義最大長度
  • Range——為數值欄位定義最大值和最小值
  • Bind——列出為模型屬性綁定參數或表單資料時,包括或排除的欄位
  • ScaffoldColumn ——在編輯器表單中允許隱藏的欄位

注意:要獲得更多使用資料註解特性為模型驗證的資訊,訪問MSDN文檔:http://go.microsoft.com/fwlink/?LinkId=159063

開啟Album類並在頂部添加下列命名空間:

using System.ComponentModel; 
 using System.ComponentModel.DataAnnotations; 
 using System.Web.Mvc; 
 為屬性添加顯示和驗證特性,如下所示:

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; } 
    } 
}

在類中添中這些後,Create和Edit介面立即對欄位驗證,並使用我們定義的顯示名稱(DisplayName),例如用Album Art URL替換了AlbumArtURL。運行應用程式並瀏覽/StoreManager/Create:

 點擊“Save”按紐時,不符合驗證規則的欄位旁會顯示驗證錯誤資訊。

 測試用戶端驗證

從應用角度來看,伺服器端驗證是非常重要的,因為使用者可能繞過用戶端驗證。然而只對Web表單進行伺服器驗證有三個重大問題:

  • 1.在表單提交->伺服器端驗證->返回到使用者瀏覽器的過程中,使用者必須等待。
  • 2.使用者正確填寫欄位並通過驗證規則時不能及時得到反饋。
  • 3.我們浪費伺服器資源執行驗證邏輯,而沒有利用使用者的瀏覽器。

很幸運,ASP.NET MVC模板架構內建了用戶端驗證,不需要任何額外的工作。

在Title欄位輸入單個字元以滿足非空驗證,驗證會立即消失(證明它是用戶端驗證)。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.