使用数据绑定控件的“无效的回发或回调参数”

时间:2008-11-16 08:52:53

标签: .net asp.net gridview

当我的数据绑定控件上发生事件(添加/编辑/删除)时,我收到以下错误。

  

无效的回发或回调参数。   使用in启用事件验证   配置或<%@ Page   EnableEventValidation =“true”%>在一个   页。为安全起见,这个   功能验证参数   回发或回调事件源自   从服务器控制那个   最初渲染它们。如果数据   是有效的和预期的,使用   ClientScriptManager.RegisterForEventValidation   注册方法   回发或回调数据   验证

我正在使用自定义DataList控件,但GridView,DetailsView,FormView和Repeater控件(以及可能与其他数据绑定控件)也会出现此问题。

我能找到的答案告诉我在配置文件或页面中关闭验证,但这听起来并不像是最好的解决方案。我做错了什么?

3 个答案:

答案 0 :(得分:24)

问题是在页面Load事件中加载控件的数据并调用DataBind()方法。但是,如果在引发事件之前调用DataBind()方法,则会出现上述异常,因为控件命名已更改。

解决方案是将其更改为if(!IsPostback)DataBind(),然后在事件处理程序的末尾调用DataBind()方法。无论如何,您需要在处理程序结束时调用它来影响更改。

如果这不是您的问题,并且您正在使用JavaScript修改控件客户端,请查看this article

这是一篇自我回答的帖子,因为我在我的博客上收到了很多关于此问题的回复,并认为我可能会进一步分享。

答案 1 :(得分:7)

谢谢你。我遇到了这个问题,你的自我回答帮助我解决了这个问题。

在每个事件处理程序结束时调用DataBind()方法的替代方法是在页面PreRender事件中执行一次。

答案 2 :(得分:3)

我遇到了同样的问题,我花了几个小时来解决我的问题。罗伯特的答案部分帮助了我,尽管无论回复与否,我的中继器仍在进行数据绑定,但问题仍然存在。经过大量的研究,我发现了一个帖子,建议设置 UseSubmitBehavior =“false”,宾果游戏,它解决了这个问题。希望这会有所帮助。