曾凡秩
摘?要:在應(yīng)用.net和c#進(jìn)行應(yīng)用系統(tǒng)開發(fā)時經(jīng)常會用到驗證控件,其中的CustomValidator驗證控件,除了配置好基本的參數(shù)外,還要配置特殊的參數(shù),同時還要自己編程實現(xiàn)驗證的功能。本文就如何用此驗證控件實現(xiàn)用戶自己的特殊驗證(比如在注冊時用戶名已存在的驗證)進(jìn)行了探討。
關(guān)鍵詞:.net?自定義驗證控件?CustomValidator
中圖分類號:G202?文獻(xiàn)標(biāo)識碼:A?文章編號:1003-9082(2020)10-00-01
在應(yīng)用.net和c#進(jìn)行應(yīng)用系統(tǒng)開發(fā)時經(jīng)常會用到Required Field Validator等驗證控件,除Custom Validator的其他控件,只要設(shè)置好相關(guān)參數(shù)后,一般都能起到正常驗證數(shù)據(jù)的作用。而Custom Validator驗證控件,除了配置好基本的參數(shù)外,還要配置特殊的參數(shù),同時還要自己編程實現(xiàn)驗證的功能。對CustomValidator控件如何引用、如何設(shè)置相關(guān)參數(shù)以及編程實現(xiàn)驗證,同時達(dá)到和常規(guī)驗證控件相似的效果等進(jìn)行探討和驗證。
一、在TextBox數(shù)據(jù)控件后添加驗證控件
如下圖在該網(wǎng)頁實現(xiàn)通過調(diào)用數(shù)據(jù)庫來實現(xiàn)用戶功能,在用戶名的右邊加入用戶驗證控件,用來判斷要注冊的用戶名是否存在,若存在,則不能注冊。
1.在注冊頁面中與自定義驗證控件相關(guān)的頁面代碼如下:
用戶名: ontextchanged=”txtName_TextChanged”>
ControlToValidate=”txtName” onservervalidate=”CustomValidator1_ServerValidate”>
2.該驗證控件的后臺代碼如下:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{String connStr = ConfigurationManager.ConnectionStrings[“l(fā)ink2”].ToString();
SqlConnection conn = new SqlConnection(connStr);?conn.Open();
string sqlStr = “select count(*) from manage where userName=” + txtName.Text + “”;
SqlCommand sc = new SqlCommand(sqlStr, conn);
int num = int.Parse(sc.ExecuteScalar().ToString());
conn.Close();?args.IsValid = true;
if (num > 0) args.IsValid = false; }
3.在用戶名數(shù)據(jù)框中輸入名字時要以上能夠驗證用戶名是否存在,則要給該數(shù)據(jù)控件添加一個事件txtName_TextChanged,該事件引發(fā)驗證,代碼如下:
protected void txtName_TextChanged(object sender, EventArgs e)
{具體驗證代碼同上面斜體字部分。
CustomValidator1.IsValid = true;
if (num > 0) CustomValidator1.IsValid = false; }
4.注冊功能代碼:
protected void btnRegister_Click(object sender, EventArgs e)
{if (Page.IsValid == true)
{ //把數(shù)據(jù)寫入數(shù)據(jù)庫}}
二、在實現(xiàn)自定義驗證控件時要注意的幾個事項:
1.要實現(xiàn)對用戶名的存在性驗證,不能用普通驗證控件,只能用自定義驗證控件CustomValidator。
2.實現(xiàn)馬上驗證,只有給被驗證的用戶名框引入文本改變事件txt Name_Text Changed,而且被驗證的文本框要設(shè)置屬性Auto Post Back="True",服務(wù)器在這個文本發(fā)生改變時立馬可以進(jìn)行數(shù)據(jù)庫查詢驗證。
3.一定要明確驗證控件的錯誤信息,是在其屬性args.IsValid值為false時才顯示出來。在txtName_TextChanged事件中進(jìn)行驗證時要用驗證控件的名字來引用,如CustomValidator1.IsValid。
4.在注冊時,在把用戶名插入到數(shù)據(jù)庫前一定要判斷頁面的有效性,即if (Page.IsValid == true){注冊代碼},否則會執(zhí)行注冊代碼,同名的用戶也會再次寫入數(shù)據(jù)庫。
結(jié)語
驗證控件是錄入數(shù)據(jù)的第一道安全屏障,而自定義驗證控件是解決普通驗證控件無法實現(xiàn)的驗證任務(wù),用.net和C#開發(fā)應(yīng)用系統(tǒng)中經(jīng)常要用到的。就本文而言,有助于初次開發(fā)者自定義驗證控件CustomValidator編程的基本思路,掌握它的基本用法,從而為開發(fā)出一個安全穩(wěn)定的系統(tǒng)打下堅實的基礎(chǔ)。要用到的關(guān)鍵屬性和事件有:AutoPostBack="True",CustomValidator1.IsValid=”True”, args.IsValid, Page.IsValid, txtName_TextChanged。
參考文獻(xiàn)
[1]陳巧莉,楊亨東,吳夢蘭. ASP.NET項目開發(fā)一體化教程[M].上海:上海交通大學(xué)出版社,2017.
[2]張領(lǐng).ASP NET項目開發(fā)全程實錄[M].北京:清華大學(xué)出版社,2018.
[3]Daniel Cazzulino等.C#Web應(yīng)用程序入門經(jīng)典[M].北京:清華大學(xué)出版社,2003.