2008-11-16 59 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”,宾果,它解决了这个问题。希望这会有所帮助。

相关问题