2017年5月25日 星期四

【ASP.NET Webform】CustomValidator ServerValidate doesn't fire

 客製伺服端驗證未觸發。

我碰到的原因很簡單,CustomValidator 預設是不會驗證 TextBox.Text 為空的情況,必須要設 ValidateEmptyText = true 它才會吃到。

ref: SO

今天又碰到另一個 CASE,不過這次是我自己寫的有問題。
validator 放在一個 ListView 裡面,每列都有,當 post back 有觸發 OnServerValidate 的事件,且 args.IsValid 條件設定也正確,甚至我在 postback 的按鈕看 Page.IsVaild 的值都是對的...

原因是基於別的業務邏輯流程,我的 ListView Datasource 指派跟 Rebind 是在 Page_LoadComplete,而我沒有判斷,每次 postback 都會重新 assign 跟 rebind ListView 所以 validator 的狀態就這麼被洗掉了... 瞎忙了一個下午。

沒有留言:

張貼留言