還好我有谷哥大神~

本來我以為我只是單純學習一種語言.....

但我錯了.....以前想要逃避的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();

}

arrow
arrow
    全站熱搜

    蕾夢 發表在 痞客邦 留言(0) 人氣()