今天在 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
另外,可以參考:
http://paladinprogram.blogspot.com/2010/08/imagebutton-repeaterdatalistgridview.html