還好我有谷哥大神~
本來我以為我只是單純學習一種語言.....
但我錯了.....以前想要逃避的css/html/......無一倖免
通通都要有基本底....難怪寫起asp.net c#這麼不順....一直卡卡....
這些叫的出名堂的語言外,還有一些我從沒碰過的小型語法,
像這次前端驗證的語法規則,不得不說....確實很好用....
(抓狂的是....到底還有幾種不同的語法在裡面.....嘶吼中.......)
好啦回歸正題~
到底好用在哪裡????
不用再像以前一樣在後台寫一堆驗證if...else...,再去判斷錯誤訊息後決定是否要執行
避免條件式寫不好或是漏寫易造成錯誤或是系統資料不正確
現在直接在前端使用提供的函式先做判斷,只要有任何錯誤就不會再執行任何動作
有5種驗證功能,不過目前我只用到3種,先對這3種做介紹囉~
其他的有用到再補充
判斷是否為空值 RequiredFieldValidate
範例:
1.物件:textbox(變數名MyColor)
2.判斷是否為空值條件式(變數名MyEmptyErr)
<asp:TextBox ID="MyColor" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="MyEmptyErr"
runat = "server"
ErrorMessage = "不可空白" /*輸出錯誤訊息*/
ForeColor ="Red" /*錯誤訊息顏色*/
ControlToValidate ="MyColor" /*針對那個物件做是否空值判斷*/
Display="Dynamic"
/*錯誤訊息是否有固定空間
None 不顯示錯誤訊息
Static 錯誤訊息會出現在對應的control旁邊,沒有錯誤訊息也會預留空間
Dynamic 沒有錯誤訊息就不會預留空間*/
></asp:RequiredFieldValidator>
---------------------------------------------------------------------------
小叮嚀:
※剛開始操作時,多注意一下程式是否正確,有沒有少了>....一些符號
本人傻傻的,使用的編輯軟體,不會立即顯示是否有漏寫....一直到執行
一直產生錯誤訊息,但又不會明確是漏了甚麼,所以最基本的傻問題卡很久.....
※如果不能執行而且一直寫jqury......的錯誤訊息請在下列.aspx.cs檔中加入這串語法
protected void Page_Load(object sender, EventArgs e)
{
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
}
----------------------------------------------------------------------------
驗證文字與字數或特定格式ReqularExpressionValidator
當作身分證驗證或是電話號碼....就很需要使用
必須配合資料庫型態,在建立資料庫欄位時,一定會規定型態與字數,
避免資料庫錯誤所以前端輸入資料時就必須判斷是否全為數字?字數?
或是像電話號碼特定格式來統一新增資料時的正確性與規則
範例:
1.物件:TextBox(變數名MyColor)
2.判斷格式條件式(變數名MyColorCheck)
<asp:TextBox ID="MyColor" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="MyColorCheck"
runat="server"
ErrorMessage="一定要3碼全數字" /*錯誤訊息*/
ForeColor="Red" /*錯誤訊息顏色*/
ControlToValidate="MyColor" /*控制項名稱*/
ValidationExpression="^\d{3}" /*格式規則*/
Display="Dynamic"
></RegularExpressionValidator>
-----------------------------------------------------------------------
ValidationExpression寫法,規則懂~就好寫囉~
同效果有很多不同的寫法,目的都是簡化規則,讓程式看起來簡單
這下就有點苦了初學者,沒有符號表根本不知道個別代表甚麼意思
有以下簡單符號規則就可以知道想要驗證個規則適用哪幾種方式囉
1. | :類似or的用法,意思是兩種規則符合其中一種就可以。
(範例: (\d[0-9\-)]{1,30})|([+]{1}[0-9]{3}[-]{1}[0-9]{1}[-]{1}[0-9]{8})
註解:規則1只能容許1~30個是數字0到9與符號- 或是 規則2符號+,3碼0-9數字,符號-,1碼0-9數字,符號-,8碼0-9數字
規則2範例格式+886-2-12345678)
2. ^ :起始符號
3. $ :結束符號
4. * :符號之前,0次以上重複出現 /*還未使用到無法註解或舉例*/
5. + :符號之前,最少1次以上重複出現 /*還未使用到無法註解或舉例*/
6. ? : 符號之前,只可以出現0次或1次 /*還未使用到無法註解或舉例*/
7. () :代表優先順序與切割規則,類似數學算式
8.{} :符號之前,表可容許的字數,
固定3碼{3} 例:abc{3}→abccc
至少出現3次以上{3,} 例:abc{3,}→abccc,abcccc....
出現1~3次{1,3} 例:abc{1,3}→abc,abcc,abccc
如果只需固定字數可以這樣寫 .{0,3}
可以輸入3碼以內的字元,中文字一個字算2,其他都是1
9. \ :若要顯示特殊字元,當剛剛保留字元要出現時就須加\ 。
例:\( 表示前端可以輸入(
10.[] :可簡化|的使用,意思是[]中任何字元都可以執行
11[^] : 非[^]中字元可以使用 例:[^ed], e跟d都不能出現
12.[-] :[]中連續字元都可以 例:[e-m],e到m中的字元都可以用
13.\d : 0-9的數字可使用
14.\D : 0-9以外的字元
15.\s : 一個空白字元
16.\S :表示任何一個非空白字元
17.\w :任何一個英數字字元
18.\W :除了英數字以外的字元可以輸入
-------------------------------------------------------------------------------------
可以跑副程式的CustomValidator
除了上述兩種方法外,還是有一些特殊的自訂規則要做判斷
例如輸入的資料與資料庫資料是否雷同,如果是key當然只能有一個
範例:
1.物件:TextBox (變數名:MyColor)
2.判斷格式條件(變數名:MyColorExist)
3.副程式(變數名:MyColorExist_ServerValidate建立前端判斷格式會自動產生)
4.彩色字皆為變數名,可自行命名
前端--------------------------------------------------------------
<asp:TextBox ID="MyColor" runat="server"></asp:TextBox>
<asp:CustomValidator ID ="MyColorExist"
runat="server"
ErrorMessage="編號已使用過"/*錯誤訊息*/
ForeColor="Red"/*錯誤訊息顏色*/
ControlToValidate="MyColor"/*辨別哪個物件*/
OnServerValidate="MyColorExist_ServerValidate"/*執行副程式*/
></asp:CustomValidator>
副程式------------------------------------------------------------
protected void MyColorExist_ServerValidate(objecy source, ServerValidateEventArgs args)
{
SqlConnection conn = new SqlConnection(MyServerLink.MyPass);/*連結資料庫*/
SqlCommand cmd = new SqlCommand("select * from COLOR where COLOR_ID = '" + MyColor.Text + "'",conn);/*sql語法從color資料表中找textbox輸入的值*/
conn.Open();/*開啟資料庫*/
SqlDataReader MyColorIDReader = cmd.ExecuteReader();/*讀取資料庫內容*/
if (MyColorIDReader.HasRows)/*如果有資料列表示該編號有使用過*/
{
args.IsValid = false;/*回覆錯誤訊息給前端,通知前端顯示錯誤訊息*/
}
cmd.Dispose();
conn.Close();
conn.Dispose();
}
留言列表