Dot-Net
帶有數據綁定控制項的“無效回發或回調參數”
當我的數據綁定控制項上發生事件(添加/編輯/刪除)時,我收到以下錯誤。
無效的回發或回調參數。使用配置或頁面中的 <%@ Page EnableEventValidation=“true” %> 啟用事件驗證。出於安全目的,此功能驗證回發或回調事件的參數是否源自最初呈現它們的伺服器控制項。如果數據有效且符合預期,請使用 ClientScriptManager.RegisterForEventValidation 方法註冊回發或回調數據以進行驗證。
我正在使用自定義 DataList 控制項,但 GridView、DetailsView、FormView 和 Repeater 控制項(可能還有其他數據綁定控制項)也會出現此問題。
我能找到的答案告訴我關閉配置文件或頁面中的驗證,但這聽起來不像是最好的解決方案。我究竟做錯了什麼?
問題是在頁面 Load 事件中為控制項載入數據並呼叫 DataBind() 方法。但是,如果在引發事件之前呼叫 DataBind() 方法,則會在控制項命名發生更改時生成上述異常。
解決方案是將其更改為 if(!IsPostback) DataBind(),然後在事件處理程序的末尾呼叫 DataBind() 方法。無論如何,您大部分時間都需要在處理程序結束時呼叫它以影響更改。
如果這不是您的問題,並且您正在使用 JavaScript 修改控制項客戶端,請查看這篇文章。
這是一篇自我回答的文章,因為我在部落格上收到了很多關於這個問題的回复,我想我可能會進一步分享。