iT邦幫忙

DAY 29
2

欄位資料驗證區分成資料規格本身代表的基本驗證,以及 string, int, DateTime 型態資料的驗證,設定方式是在欄位上設定相關的 Attrubute,驗證規於系統啟動時隨同欄位規格一同快取。

<驗證類別>
資料基本驗證
由於 .Net 是強型別程式語言,Boolean, DateTime, Integer, enum 資料型態已然驗證,所以僅 string 型態需提供基本驗證。
基本驗證功能由 Kuick.Data.ValidationBasic 實作,針對 string 屬性進行以下驗證:

  1. NotAllowNull -- 不為空值
  2. DBCS -- 是否存在雙位元字元
  3. Reference -- 參照資料是否存在 (功能類似資料庫的 Foreign Key)
  4. Length -- 長度限制

型別特殊驗證

  1. String -- 由 Kuick.Data.ValidationString 實作
  2. Integer -- 由 Kuick.Data.ValidationInteger 實作
  3. DateTime -- 由 Kuick.Data.ValidationDate 實作

<設定驗證方式>
以幾個例子說明驗證設定方式:

1. UserName 長度至少 4 碼

[ColumnSpec]
[ValidationString(BoundaryString.LengthGreaterThan, 3)]
public string UserName { get; set; }

2. 生日限制小於 2012-11-05

[ColumnSpec]
[ValidationDate(BoundaryDate.SmallerThan, "2012-11-05")]
public DateTime Birthday { get; set; }

3. Level 值限定在 0 ~ 9 之間

[ColumnSpec]
[ValidationInteger(BoundaryInteger.Between, 0, 9)]
public int Level { get; set; }

4. Email 格式驗證

[ColumnSpec]
[ValidationString(BoundaryString.IsEmailAddress)]
public string Email { get; set; }

<驗證設定快取>
驗證規於系統啟動時隨同欄位規格一同快取,欄位規格方式請參閱『Kuick -- Schema Cache 規格快取』。
驗證定義介面 IValidation,其實作類別包含:

  1. 基本驗證類別 ValidationBasic
  2. 字串驗證類別 ValidationString
  3. 日期驗證類別 ValidationDate
  4. 數值驗證類別 ValidationInteger

<觸發驗證時點>
目前整體實作尚未完整,以下內容部份仍在規畫中:
Server Side
IEntity 定義觸發驗證方法 Validate,規畫由 Api 裡 Interceptor 處理前觸發驗證。

Client Side
IValidation 定義前端資料驗證 JavaScript,也已經於各個類別實作出,規畫中一個資料維護後台,將會引用到這些內容。

下一篇『Kuick -- 網頁資料傳遞』裡,將提及如何對於 Post, Get, Cookie 的資料,透過實作 IValidation 的 Attribute 進行資料驗證。

========================================
鐵人賽分享列表:Kuick Application & ORM Framework
開放原始碼專案:kuick.codeplex.com
直接下載原始碼:Kuick
下載相關文件檔:C# Code Conventions and Design Guideline
相關教學影片區:Kuick on YouTube


上一篇
Kuick -- 更新開放原始檔
下一篇
Kuick -- 網頁資料傳遞
系列文
Kuick Application & ORM Framework34

2 則留言

0
Albert
iT邦高手 1 級 ‧ 2012-11-06 00:29:50

驗證條件 Hard Code 在程式裡

除了沒法讓你設定外 就是沒法讓你設定

ERP 導入顧問 你還在用這種 限制條件 驗證條件 綁死在程式中 讓你無法調整的系統嗎 ?

看更多先前的回應...收起先前的回應...

albertachen

終於等到有人提出實質的建議,感謝 albertachen 提供寶貴的經驗。
~ 中K

kevinjong提到:
終於等到有人提出實質的建議

阿伯大是我們首席專業顧門口的不二人選開心

ted99tw iT邦高手 1 級‧ 2012-11-06 07:43:24 檢舉

tecksin提到:
阿伯大是我們首席專業顧門口的不二人選

嗯...“口”好像放錯地方了,應是~
啊~~伯大是我們首席專業顧門的不二人選毆飛

Albert iT邦高手 1 級‧ 2012-11-06 08:05:14 檢舉

感謝 同胞熱烈回應 !

ted99tw iT邦高手 1 級‧ 2012-11-06 08:49:09 檢舉

albertachen提到:
同胞

這兩個字看起來就爽啊~~~開心

我要留言

立即登入留言