2008-11-16 92 views
13

當我的數據綁定控件發生事件(添加/編輯/刪除)時,出現以下錯誤。Databound控件的「回發或回調參數無效」

回發或回調參數無效。 在 頁面中,使用 配置或%@ EnableEventValidation =「true」%>啓用了事件驗證。爲了安全起見,此 功能驗證參數 回發或回調事件從 最初呈現它們的服務器控件發起 。如果數據 有效並且是預期的,請使用 ClientScriptManager.RegisterForEventValidation 方法來註冊 回發或回調數據以驗證 。

我正在使用自定義DataList控件,但GridView,DetailsView,FormView和Repeater控件(也可能與其他數據綁定控件)也會發生此問題。

我可以找到的答案告訴我關閉配置文件或頁面中的驗證,但這聽起來不像是最好的解決方案。我究竟做錯了什麼?

回答

24

問題是在頁面Load事件中加載控件的數據並調用DataBind()方法。但是,如果在引發事件之前調用DataBind()方法,那麼隨着控件命名已更改,會生成上述異常。

解決方法是將此更改爲if(!IsPostback)DataBind(),然後在事件處理程序結束時調用DataBind()方法。無論如何,您需要在處理程序的最後調用它來影響更改。

如果這不是您的問題,並且您正在使用JavaScript修改控制客戶端,請檢查this article

這是一篇自我回答的文章,因爲我在本期博客上收到了很多回復,並認爲我可能會進一步分享它。

6

謝謝你。我面臨這個問題,你的自我回答幫助我解決了這個問題。

在每個事件處理程序結束時調用DataBind()方法的替代方法是在頁面PreRender事件中執行一次。

3

我遇到了同樣的問題,花了幾個小時才解決了我的問題。羅伯特回答部分幫助我,儘管數據綁定我的轉發器,無論是否回發,問題仍然存在。經過大量的研究,我碰到一個帖子,建議設置UseSubmitBehavior =「false」,賓果,它解決了這個問題。希望這會有所幫助。

相關問題