首先看一眼介面
介面需求:
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)
{
//按鈕的事件處理邏輯
....
}
}
(註:個人意見,如有錯誤,請不吝指教)