1. 程式人生 > >asp.net mvc 3.0詳細筆記__17__使用 DataAnnotations 進行模型驗證

asp.net mvc 3.0詳細筆記__17__使用 DataAnnotations 進行模型驗證

         歡迎一起來學習MVC 3.0,我們在一步一個腳印的做一個MVC 3.0的專案,期間會有很多值得探索的地方。將會學到Razor,Lampda,Entity Framework,Linq C#新特性等等知識,一起加油吧!

說起驗證,大家都很熟悉了,各種驗證手段也層出不窮,那麼微軟的asp.net mvc 3.0為我們提供了什麼樣的驗證理念呢?今天我們就來深入剖析以下.

(1)首先分析驗證的目的:防止使用者通過輸入對程式造成安全方面的隱患。說白了,就是防止使用者將某些不符合規則,甚至對程式造成某種破壞的資料提交到資料庫。

微軟認為:既然驗證的東西是針對資料庫的資料,而asp.net mvc 3.0又將mvc中的

M(Model)與資料庫緊密聯絡起來,因此微軟決定在M(模型)這塊下手,之前我們的模型層的類中隱隱約約看見過一些解釋性樣式的文字,具體案例參考StoreManager控制器下的Edit方法和StoreManager資料夾下的Edit.cshtml檢視檔案,部分Edit方法如程式碼1.1

程式碼1.1

        /// <summary>
        /// 唱片價格
        /// </summary>
        [Required(ErrorMessage = "唱片必須有價格!")]
        [Range(0.01, 100.00, ErrorMessage = "範圍必須從 0.01 到 100.00")]
        public Nullable<decimal> Price { get; set; }
其中Required和Range就是用於驗證而提供的關鍵字,同屬於DataAnnotations

(2)常用的DataAnnotations如下所示:

Required 必須 – 表示這個屬性是必須提供內容的欄位
DisplayName 顯示名 – 定義表單欄位的提示名稱
StringLength 字串最大長度 – 定義字串型別的屬性的最大長度
Range 範圍 – 為數字型別的屬性提供最大值和最小值
Bind 繫結 – 列出在將請求引數繫結到模型的時候,包含和不包含的欄位
ScaffoldColumn 支架列 - 在編輯表單的時候,需要隱藏起來的的字元

(3)雖然在模型層對一些欄位進行了驗證資訊的宣告,但最終還是需要在檢視一側呼叫這份宣告才會真正的去驗證,有時候驗證沒效果大概就是聲明瞭而沒有去

呼叫的緣故。因此在檢視頁面裡首先要做的是:在表單範圍內要用@Html.ValidationSummary(true)呼叫驗證;這還不算完,因為在頁面上,一般要把錯誤提示顯示在當前欄位的後面,因此你還要在顯示資訊的位置呼叫驗證,

如對以上價格的驗證

@Html.EditorFor(model => model.Price)

@Html.ValidationMessageFor(model => model.Price)

(4)執行程式,在編輯的頁面的價格輸入框中輸入"5555555",點選"Save"如圖4.1所示,驗證成功。

圖4.1