在新增使用者的介面,我想要使用CustomValidator 在資料送出前檢查使用者帳戶是否已經存在資料庫。CustomValidator 可使用OnServerValidate事件,在後台進行自己想要的驗證過程。
但是測試的時候卻發現,按下確認按鈕後並不會進入OnServerValidate事件!ControlToValidate和ValidationGroup屬性都有設好,但就是不會進入,到底是為什麼呢?
上網搜尋原因,原來是它必須要在觸發"Page.IsValid"的時候,才會進入OnServerValidate事件,否則根本不會有驗證的效果。所以需要在確認按鈕的Click事件裡面,檢查Page.IsValid。
if (Page.IsValid)
{
... ...
}
但是按下確認按鈕後,還是不行!! 為什麼呢?在確認按鈕的Click事件加入中斷點,發現根本沒有進入Click事件...
原來是跟頁面生命週期的概念有關了~~因為按下按鈕後,頁面會進行一次Postback,也就是一次重生,重生過程中會先進行Validate,才會處理其他事件(按鈕Click)。也就是畫面中其他欄位的Validator產生作用了,有些欄位並沒有通過驗證,所以根本不會進行到Click的動作。
所以當其他欄位都正確填入,順利通過驗證後,按下確認按鈕,就會執行到 if (Page.IsValid) 程式碼,之後才會觸發進入OnServerValidate事件。
2013年10月30日 星期三
2013年10月21日 星期一
2013年10月11日 星期五
ASP.NET頁面生命週期問題
概略的觀念是頁面包含前台和後台,前台的HTML是靜態的呈現,後台的code是運作,運作完成之後計算出要在前台呈現的HTML,然後後台就清除,頁面進入「死」的狀態,直到事件發生,使頁面復活再循環一次生命週期。
頁面生命週期階段:
因為頁面會死掉,所以裡面的變數也會跟著不見,全域變數也是一樣。
這時候就要利用Session等方法來儲存資料。
參考:王者歸來ASP.NET 4 權威指南,馬偉 著
頁面生命週期階段:
- 瀏覽器請求
- 頁面框架初始化 Page.Init()
- 用戶程式碼初始化 Page.Load()
- 驗證
- 事件處理: 處理上一個生命週期完成後觸發的事件
- 呈現 Page_PreRender()
- 清除 Page_Unload()
因為頁面會死掉,所以裡面的變數也會跟著不見,全域變數也是一樣。
這時候就要利用Session等方法來儲存資料。
參考:王者歸來ASP.NET 4 權威指南,馬偉 著
2013年10月7日 星期一
馬修公爵雜誌--創刊誌
本人楊基恩,男性,自封稱號馬修公爵,出母腹至今約25年又127天,位置在+25° 0' 4.40", +121° 31' 17.40"台灣台北永和區,六層樓的高度。於2013年10月7日22:30左右,使用ASUS A53S筆記型電腦繁體中文語系,以右手食指點擊羅技牌藍芽滑鼠之左鍵,運行Google Chrome瀏覽器,開創了本網誌,並命名為「馬修公爵雜誌」。
因為計畫在本網誌張貼的內容可能紛雜,無特定主題,故名為「雜誌」。預計包含的主題有:生活感想抒發、靈感散文創作、程式設計等電腦學習筆記。與信仰相關的內容則統一張貼於「馬超的靈修天地」。
細述因由,概為時勢所趨。首先,本人第一份網誌的「無名小站」代碼庫在不久後即將遭到毀滅,雖然早已沒落,文章稀少,但這象徵著一個時代的結束。第二,本人大學以後較常張貼之「PTT2」個人版,雖仍運作正常,但可能是使用者大幅轉移至Facebook而造成觀看及互動人數下滑,已不符使用需求。
另一原因為目前開始的工作內容多為電腦程式相關,時常須上網搜尋前人的智慧結晶,使敝人有感求之於人者太多,因此想將學習筆記回饋於大眾。谷歌公司出品的Blogger,管理容易,且可經由其搜尋引擎被較多人接觸,是故擇之。
僅此短文為誌。
因為計畫在本網誌張貼的內容可能紛雜,無特定主題,故名為「雜誌」。預計包含的主題有:生活感想抒發、靈感散文創作、程式設計等電腦學習筆記。與信仰相關的內容則統一張貼於「馬超的靈修天地」。
細述因由,概為時勢所趨。首先,本人第一份網誌的「無名小站」代碼庫在不久後即將遭到毀滅,雖然早已沒落,文章稀少,但這象徵著一個時代的結束。第二,本人大學以後較常張貼之「PTT2」個人版,雖仍運作正常,但可能是使用者大幅轉移至Facebook而造成觀看及互動人數下滑,已不符使用需求。
另一原因為目前開始的工作內容多為電腦程式相關,時常須上網搜尋前人的智慧結晶,使敝人有感求之於人者太多,因此想將學習筆記回饋於大眾。谷歌公司出品的Blogger,管理容易,且可經由其搜尋引擎被較多人接觸,是故擇之。
僅此短文為誌。
訂閱:
文章 (Atom)