2014年8月10日 星期日

[ASP.NET]如何取消Button控制項的PostBack

ASP.NET多數控制項都可以選擇是否觸發AutoPostBack

但偏偏Button控制項沒這東西讓你選,預設就是有

後來在ASP.NET的Button控制項上使用jQuery的toggle()

控制標籤顯示或隱藏

但是Button一按下去原本隱藏的標籤是有顯示了

但馬上又隱藏………

改CausesValidation="False"(是否觸發驗證)

跟UseSubmitBehavior="False"(是否為submit的按鈕)

都不行…

因為都是按下按鈕後畫面閃一下就收起來

而且在Page_Load()設定中斷點也有進到裡面

所以推斷應該是PostBack搞出來的問題

查了有無方法不讓Button控制項觸發PostBack

一開始有找到這個

Button.Attributes.Add("onclick", "event.returnValue=false;");

不過還是怪怪的…Chrome可以解決,IE跟FireFox一樣不行

可是到後來又不行了(是七月的關係嗎?)

後來終於找到在IE、FireFox、Chrome都可以取消PostBack的方法

Button.Attributes.Add("onclick", "return false;");

就很乾脆的回傳false就不會觸發PostBack

但要注意的是如果這樣寫的話Button就真的完全不會執行所Binding的事件

我是因為只拿來當開關所以沒差

參考文獻
[1] http://stackoverflow.com/questions/7547945/disable-postback-at-click-on-a-button
[2] http://stackoverflow.com/questions/683746/how-to-disable-postback-on-an-asp-button
[3] http://www.dotblogs.com.tw/yc421206/archive/2009/04/22/8125.aspx
[4] http://www.blueshop.com.tw/board/show.asp?subcde=BRD20080729150920PJW
[5] http://cate-taiwan.blogspot.tw/2008/08/aspnet-button-postback.html