ASP.NET MVC — DataAnnotation 資料模型驗證

謝駿辰
Jason的網頁筆記
Nov 24, 2021
Photo by Scott Rodgerson on Unsplash

網站已搬家,請到新網站支持我呦> https://jasonhsieh-web.github.io/

網站中,開發者會為頁面資料,進行欄位驗證確保資料的正確性,因此開發者一般會使用JavaScript來進行客戶端驗證,而ASP.NET MVC中,無提供自動化的客戶端驗證,而是須使用模型驗證(Model Validate)。

Model Validate

Model Validate的應用讓開發者可謂Model附加上驗證,使得當使用者傳送輸入資料前,進行Model的驗證邏輯,Model Validate是透過.NET Framework裡的DataAnnotation輔助進行驗證,DataAnnotation提供讓開發者以附加屬性的方式,來添加資料驗證規則,進而完成資料驗證。

客戶端驗證

DataAnnotation 配合Javascript的三個檔案jquery.js、jquery.validate.js、jquery.validate.unobtrusive.js,後兩個檔案是在客戶端上輔助進行驗證的JavaScript,在NuGet安裝就行了。如下圖,安裝反白的套件剛說的三個檔案都會安裝下來,使用Html.Helper會自動幫我們產生jquery的驗證屬性。

驗證屬性

在使用驗證屬性前要先using兩個命名空間

using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
  1. [DisplayName]:用於定義欄位顯示名稱

2.[Required]:可藉由傳入參數ErrorMessage來設定顯示的錯誤訊息

3.[StringLength]:定義字串最大長度,也可以傳入MimimumLength來設定最小長度

4.[Range]:定義數值欄位的上下限值,可以設定最小跟最大值

5.[Compare]:用於比對與另一個欄位的內容是否相同,最常被用在會員註冊,會需要輸入兩次相同的密碼進行驗證

6.[RegularExpression]:用於使欄位輸入的內容必須符合指定的正規表達式,想了解正規表達式可以看我的這篇文章

7.[EmailAddress]:驗證是否為電子郵件

8.[Url]:驗證欄位是否是網址格式

9.[FileExtension]:定義檔案的副檔名,預設為png、jpg、jpeg、gif,若要使用[FileExtension]必須先用NuGet安裝jQuery.Validation.AdditionMethods

10.[CreditCard]:判斷是否為信用卡卡號

11.[DataType]:可藉由傳入參數決定欄位資料型態,@Html.EditorFor,會依照資料型態不同產生不同的input type

12.[Remote]:可使欄位輸入值透過AJAX方式送到指定的Controller Action進行驗證,並藉由回傳的結果,來驗證是否成功

參考至: 一次就懂 ASP.NET MVC 5.x 網站開發:Web應用的經典實務範例解析(Visual C# )

如果我的筆記對您有幫助的話,不吝嗇給我個clap哦~ 謝謝您 !

--

--