.Net Validator验证框架 [ .Net | Validator Framework | Attribute ]
引: 具體地址忘記了,我是以前存在window live?spaces 現(xiàn)在搬過來備份
(該文章在代碼范例上有些說明不全,看附件來補(bǔ)充對(duì) C# Attribute 的應(yīng)用)
前言
???? 簡(jiǎn)單易用是.Net Validator驗(yàn)證框架努力的目標(biāo)?;贏ttribute驗(yàn)證器標(biāo)識(shí),豐富的驗(yàn)證返回類型,提供可擴(kuò)展的驗(yàn)證器接口......——又一個(gè)心愿和想法實(shí)質(zhì)性的開始,開心ing? :? )
?
正文
??????一、框架介紹
本框架基于類屬性(Property)的Attribute驗(yàn)證器標(biāo)示,匹配屬性(Property)名和Form、QueryString中的Key以及服務(wù)器端控件的ID名稱,再根據(jù)驗(yàn)證器對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)。
驗(yàn)證器結(jié)構(gòu)圖
?
??????二、框架使用例子
2.1 常規(guī)驗(yàn)證
2.1.1 準(zhǔn)備Model類User,注意引用命名空間using Lasy.Validator;
?
代碼 1 public sealed class User2 {
3 #region Member Variable
4 private string username;
5 private string email;
6 private int userpermission;
7 #endregion
8 #region Properties
9 /// <summary>
10 /// 用戶名
11 /// </summary>
12 ? [Required]
13 public string Username
14 {
15 get { return username; }
16 set { username = value; }
17 }
18 /// <summary>
19 /// 電子郵箱
20 /// </summary>
21 ? [Email]
22 public string Email
23 {
24 get { return email; }
25 set { email = value; }
26 }
27 /// <summary>
28 /// 用戶權(quán)限
29 /// </summary>
30 ? [IntRange(1, 5)]
31 public int Userpermission
32 {
33 get { return userpermission; }
34 set { userpermission = value; }
35 }
36 #endregion
37 }
?
?
?
2.1.2 控制臺(tái)測(cè)試類?
?
代碼 1 static void Main(string[] args)2 {
3 IDictionary<string, object> dict = new Dictionary<string, object>();
4 dict.Add("Username", "over");
5 dict.Add("Email", "over140gmail.com");
6 dict.Add("Userpermission", "5");
7 Validator validator = new Validator(typeof(User));
8 Console.Write("Validator Result:");
9 Console.WriteLine(validator.Validate(dict).ErrorStringResult);
10 dict["Email"] = "over140@gmail.com";
11 Console.Write("Validator Result:");
12 Console.WriteLine(validator.Validate(dict).BoolResult);
13 Console.ReadLine();
14 }
?
?
?
2.1.3 結(jié)果顯示截圖
?
2.2 表單驗(yàn)證
2.2.1 User類
?
代碼 1 class User2 {
3 #region Member Variable
4 private string username;
5 private string password;
6 #endregion
7 #region Properties
8 /// <summary>
9 /// 用戶名
10 /// </summary>
11 ? [Required]
12 [MinLength(5, FailKeyDesc = "用戶名")]
13 public string Username
14 {
15 get { return username; }
16 set { username = value; }
17 }
18 /// <summary>
19 /// 密碼
20 /// </summary>
21 ? [Required]
22 public string Password
23 {
24 get { return password; }
25 set { password = value; }
26 }
27 #endregion
28 }
?
?
?
? 2.2.2 測(cè)試頁面
login.aspx
<form id="form1" runat="server">
?用戶名:
<asp:TextBox ID="Username" runat="server"></asp:TextBox>
<br />
密碼:
<asp:TextBox ID="Password" runat="server"></asp:TextBox>
<br />
<asp:Button runat="server" Text="登錄驗(yàn)證" onclick="Unnamed1_Click" />
</form>
?
? ? 按鈕代碼
?
代碼 1 protected void Unnamed1_Click(object sender, EventArgs e)2 {
3 //獲取表單所有元素 this.Controls[3].Controls
4 ? if (new Validator(typeof(User)).Validate(this.Username, this.Password).BoolResult)
5 {
6 Response.Write("驗(yàn)證成功!");
7 }
8 else
9 {
10 Response.Write("驗(yàn)證失敗!");
11 }
12 }
?
?
2.2.3 效果
?
三、使用建議
3.1 如果已經(jīng)做了客戶端校驗(yàn),服務(wù)器端從Request中提取表單數(shù)據(jù)進(jìn)行操作,可以直接使用Validator(Type type, bool checkAll, bool setDefaultValue)構(gòu)造函數(shù),然后從ValuesResult中取得已經(jīng)校驗(yàn)完畢IDictionary<string, object>數(shù)據(jù)。
3.2 NoValidator與ValuesResult在提取表單數(shù)據(jù)時(shí)配套使用。
3.3 調(diào)試的時(shí)候注意類的Attribute是靜態(tài)緩存的,需要清理或重新生成修改后的驗(yàn)證器標(biāo)識(shí)才管用!
?
四、下載
4.1 源代碼 Src
4.2 文?? 檔 Lasy.Validator.chm
?
結(jié)束語
????? 雖然造輪子常常是一件吃力不討好的事情,但是懷著我覺得好用,或者想做一個(gè)好用的東東出來,推薦給朋友試試看的心情就會(huì)好很多,何況還是有許多熱心人提供寶貴的建議:? )
轉(zhuǎn)載于:https://www.cnblogs.com/dev-xp/archive/2010/10/29/1864607.html
總結(jié)
以上是生活随笔為你收集整理的.Net Validator验证框架 [ .Net | Validator Framework | Attribute ]的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 文件上传的注意细节(PHP)
- 下一篇: 一起学windows phone7开发(