asp.net中requiredfieldvalidator很糾結的問題(有關ClientScript屬性)

來源:互聯網
上載者:User

首先看一眼介面

介面需求:

1."Create Section"按鈕,取得文字框的輸入文本存入庫中;

2.點擊GridView的"編輯",將記錄的資訊填入文字框中;

3.業務編碼對應不可為空的表欄位SectionCode,ID為"tbSectionID";

4.添加一個ReQuiredFieldValidator,ControlToValidate="tbSectionID";

現在開始糾結的問題

首先,ReQuiredFieldValidator的EnableClientScript設為true,使ReQuiredFieldValidator允許用戶端驗證。

點擊按鈕會觸發認證,提示SectionId不可為空,滿足要求,但點擊GridView的"編輯"也會觸發驗證,使得記錄的資訊無法填充控制項

分析原因:EnableClientScript=true,ReQuiredFieldValidator進行用戶端的驗證,點擊"編輯"即會觸發用戶端的驗證,此時SectionID的值為空白,驗證無法通過,故無法回傳到伺服器,因此也無法將文字框填充內容。

然後,將ReQuiredFieldValidator的EnableClientScript設為false,取消用戶端的驗證

此時點擊按鈕提示驗證無法通過,但內容卻能夠存入庫,點擊編輯,也提示驗證無法通過,但文字框卻填充成功。

分析原因:ReQuiredFieldValidator的EnableClientScript設為false會將驗證在伺服器端進行,根據SectionID的值進行驗證,若不通過,將Page的IsValid設為false,並顯示ErrorMessage,但伺服器端的代碼還是隨後執行了。

解決辦法:此時要添加代碼來判斷驗證的結果了,在Button的事件響應函數寫為如下形式:

protected void OnButton_Clicked(object sender,EventArgs e)

{

  if(Page.IsValid)

  {

    //按鈕的事件處理邏輯

    ....

  }

}

(註:個人意見,如有錯誤,請不吝指教)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.