2008年10月29日 星期三

GrideView 加入自訂 Button 出錯

今天在 GrideView 裡加入自訂 Button ,在網頁執行時點選該 Button,就會出現下面錯誤。 雖然有人直覺的建議關閉 enableEventValidation,但在XSS攻擊盛行的當下,實在不是個
好方法。

------ Error Message -----

無效的回傳或回呼引數。已在組態中使用 <pages enableEventValidation="true"/>或在網頁中使用<%@ 
Page EnableEventValidation="true" %> 啟用事件驗證。基於安全性理由,這項功能驗證回傳或回呼引數是來自原本呈現它們的伺服器控制項。如果資料為有效並且是必需的,請使用 ClientScriptManager.RegisterForEventValidation 方法註冊回傳或回呼資料,以進行驗證。 


-------------------------

花了幾個小時後,發現原來是自己在 Page_Load(  ) 裡,不分是否為  IsPostBack 都去重新Bind( ) 那 GrideView,但我也的確需要在 Button 被觸發後,重新去 Bind( ) 過 GridView,在進退維谷之際,想到還有一個 OnPreRender( ) 可以用,所以我將 Bind( ) GridView 的動作搬到 OnPreRender( ) 之後,就正常了。真沒想到,一時的疏忽,竟衍生出這麼難找的 BUG。

PS:還好目前的專案有用VSS控管,所以在找錯誤時,可以放心的砍掉其他不相關的程式,才得以順利找到問題。待找出真正的問題點後,再將專案復原簽出就可以了。



另外,可以參考:
http://paladinprogram.blogspot.com/2010/08/imagebutton-repeaterdatalistgridview.html

沒有留言:

張貼留言