ASP.NET Button postback
ASP.NET 2.0有個新的功能,本來以為是簡單取上一頁的值,平常也很少寫ASP.NET,所以也就只是了解ASP.NET 2.0 有個 postback功能。
最近有個專案要使用ASP.NET開發,所以在實作時就發現一個問題了。有個功能在Page_Load 時去抓取資料庫的值填入畫面元件,在按下button時就把畫面中的值更新至資料庫,這算是很簡單的功能吧,結果我卡住了,竟然沒法子更新,debug時竟然抓畫面的值也是相同,難到我遇到鬼,還是vb有問題。
結果是 ASP.NET Button postback 的問題,在 ASP.NET 的button 預設是postback ,但是在ASP.NET 的運行機制中,Button 的 Click 事件,一定會是 Page_Load 事件之後,這才發生問題,不過只要在Page_Load 事件裡面把抓資料庫的值填入畫面元件的區塊放在 ispostback 裡面
即可。
因為由 PostBack 動作所引發的控制項事件,是在 Page_Load 中處理,此時會去檢查 Request.Form 的回傳值,再決定要引發的控制項事件。若需要在 Page Load 之前就要知道是那個 Button Click 動作,那就要自行由 Request.Form 中去判斷那個按鈕產生的 PostBack 動作。
要取消button 的postback 只要把 UseSubmitBehavior 屬性設為 False 即可。
所以在寫ASP.NET時在 Page_Load 有實作時要小心postback的問題,以免發生不預期的bug,又找不到問題,我也找了幾個小時才搞定。
0 意見:
張貼留言