Enterprise Library 4.1--實體驗證程式塊
實體驗證的作用簡單來講,就是從服務端對資料進行驗證。(特別是對資料安全性要求比較高的應用,這是十分必要的)
廢話不說了,直接講下使用步驟:(因為我是做web開發的,主要是講解asp.net環境中的使用)
1.先新增Microsoft.Practices.EnterpriseLibrary.Validation.dll的引用
2.最基本的使用方法(也是我最不喜歡的一種方式),直接在實體類上透過新增特性實現
實體類如下:
public class Person
{
[StringLengthValidator(2, 12, MessageTemplate = "請輸入2-12位長度的字元")]
public string Name
{
set;
get;
}
[RegexValidator(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*", MessageTemplate = "請輸入有效的Email地址")]
public string Email
{
set;
get;
}
}
該方式必須在原有程式碼幾乎每個欄位上都要修改,而且這種硬編碼的寫法比較暈(何況對於linq to sql這類東東,修改dbml後使用者所做的修改都會丟失) 3.然後就可以驗證了,程式碼如下:
using System;
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
protected void Page_Load(object sender, EventArgs e)
{
Person _p = new Person() { Name = "1", Email = "jimmy.yang#126.com" };
ValidationResults _results = Validation.Validate
if (!_results.IsValid)
{
foreach (ValidationResult vr in _results)
{
Response.Write(string.Format("錯誤位置:{0};原因:{1}
", vr.Key, vr.Message));
}
}
}
對於步驟2中提到的不便之處,幸好EnLib還提供了另一種方式,允許使用者把驗證規則放在配置檔案中,步驟如下:(a)先在web.config上右擊,選擇Edit Enterprise Libaray Configuration
(b)新建一個Validataion Application Block
(c)new-->Type-->Load From File... 選擇實體類所在的DLL(如果實體類沒有分層構架,先把專案編譯一下,直接選擇專案bin目錄下的dll)不過在使用過程中,發現一個bug:如果進行這一步前未編譯生成dll,或者進到這一步後,又修改了實體類,配置工具好象反射時,始終不能重新整理出最新的實體類,解決辦法:關掉vs,重新開啟再選擇dll就正常了,不知道這是不是我機器上的個別現象
(d)new-->Rule Set --> new --> Choose Members-->選擇要驗證的成員
(e)新增驗證規則
(f)設定Person的預設規則
Ok了,這下所有驗證規則都被放到web.config中了,以下是web.config中的相關節點
Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral"
name="Not Null Validator" />
messageTemplateResourceName="" messageTemplateResourceType=""
tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.StringLengthValidator, Microsoft.Practices.EnterpriseLibrary.Validation,
Version=4.1.0.0, Culture=neutral"
name="String Length Validator" />
messageTemplate="請輸入有效的電子郵件地址" messageTemplateResourceName=""
messageTemplateResourceType="" tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.RegexValidator,
Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral"
name="Regex Validator" />
以後要修改驗證規則,只需要修改web.config即可,相對更靈活一些,但是這樣有一個問題,隨著要驗證的類越來越多,web.config會越來越龐大,其實可以把驗證規則單獨放到另一個檔案裡,只需要在web.config上做些修改即可,注意下面的高亮部分
上面第二段中的filePath=... 即表示把驗證規則放到config目錄下的validate.config中 接下來直接新建一個config目錄,然後把validate.config放在裡面就可以了,validate.config內容如下:
messageTemplate="請輸入正確的電子郵件地址" messageTemplateResourceName=""
messageTemplateResourceType="" tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.RegexValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral"
name="Regex Validator" />
messageTemplateResourceName="" messageTemplateResourceType=""
tag="" type="Microsoft.Practices.EnterpriseLibrary.Validation.Validators.StringLengthValidator, Microsoft.Practices.EnterpriseLibrary.Validation, Version=4.1.0.0, Culture=neutral"
name="String Length Validator" />
最後再講一點廢話,QuickStarts中有一個關於asp.net的驗證示例,裡面的效果類似於常規的驗證控制元件,不過是要頁面提交後,由服務端再返回的,個人覺得這樣效率太低,我傾向於先在頁面上做客戶端驗證並給出相關出錯提示,然後再到服務端程式碼裡用文中所提的方法來驗證,所以這個示例涉及的內容就不準備研究了,大家有興趣的話,可以自行去look look這個例子
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2819/viewspace-2801272/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Enterprise Library 4.1學習---快取應用程式塊快取
- 實戰8-滑塊驗證
- library cache lock和library cache bin實驗_2.0
- 基於YOLO實現滑塊驗證碼破解YOLO
- 滑塊驗證圖片
- 直播商城原始碼,驗證方式之一,滑塊驗證原始碼
- 某滑塊驗證碼識別思路(附完整程式碼)
- 【驗證碼逆向專欄】某驗“初代”滑塊驗證碼逆向分析
- 使用 Turing 破解滑塊驗證碼
- 【驗證碼逆向專欄】某驗三代滑塊驗證碼逆向分析
- 【驗證碼逆向專欄】某驗四代滑塊驗證碼逆向分析
- easy-captcha實現驗證碼驗證APT
- ASP.NET MVC中使用FluentValidation驗證實體ASP.NETMVC
- django與小程式實現登入驗證功能Django
- 7.1 實現程式記憶體塊列舉記憶體
- playwright--自動化(二):過滑塊驗證碼 驗證碼缺口識別
- C++身份核驗介面程式碼、身份證OCR、身份證實名認證APIC++API
- Laravel 驗證類 實現 路由場景驗證 和 控制器場景驗證Laravel路由
- 你必須瞭解的反射——反射來實現實體驗證反射
- lumen驗證類 實現控制器場景驗證
- 短視訊直播原始碼,拖動滑塊實現圖片驗證效果原始碼
- 阿里雲滑塊驗證失敗解決方案阿里
- 實驗1 現代C++程式設計初體驗C++程式設計
- Django實現驗證碼Django
- 小程式接入滑動驗證
- volatile的特性程式碼驗證
- Taro實踐 - TOPLIFE小程式 開發體驗
- Taro實踐 – TOPLIFE小程式 開發體驗
- 計算機網路驗證性實驗計算機網路
- 直播系統程式碼,登入時常用驗證方式實現
- 簡單幾步實現滑動驗證碼(後端驗證)後端
- 簡訊驗證實現方式
- gin使用BasicAuth()(驗證)中介軟體
- 配合滑塊圖片驗證的JS來了,一行js引入即可實現JS
- 直播軟體搭建,姓名,身份證input驗證過濾
- dart系列之:手寫Library,Library編寫最佳實踐Dart
- 身份驗證會影響使用者體驗嗎?
- 一對一原始碼,滑塊驗證,滑塊左右滑動顯示的位置原始碼