当我的数据绑定控件上发生事件(添加/编辑/删除)时,我收到以下错误。
无效的回发或回调参数。 使用in启用事件验证 配置或<%@ Page EnableEventValidation =“true”%>在一个 页。为安全起见,这个 功能验证参数 回发或回调事件源自 从服务器控制那个 最初渲染它们。如果数据 是有效的和预期的,使用 ClientScriptManager.RegisterForEventValidation 注册方法 回发或回调数据 验证
我正在使用自定义DataList控件,但GridView,DetailsView,FormView和Repeater控件(以及可能与其他数据绑定控件)也会出现此问题。
我能找到的答案告诉我在配置文件或页面中关闭验证,但这听起来并不像是最好的解决方案。我做错了什么?
答案 0 :(得分:24)
问题是在页面Load事件中加载控件的数据并调用DataBind()方法。但是,如果在引发事件之前调用DataBind()方法,则会出现上述异常,因为控件命名已更改。
解决方案是将其更改为if(!IsPostback)DataBind(),然后在事件处理程序的末尾调用DataBind()方法。无论如何,您需要在处理程序结束时调用它来影响更改。
如果这不是您的问题,并且您正在使用JavaScript修改控件客户端,请查看this article。
这是一篇自我回答的帖子,因为我在我的博客上收到了很多关于此问题的回复,并认为我可能会进一步分享。
答案 1 :(得分:7)
谢谢你。我遇到了这个问题,你的自我回答帮助我解决了这个问题。
在每个事件处理程序结束时调用DataBind()方法的替代方法是在页面PreRender事件中执行一次。
答案 2 :(得分:3)
我遇到了同样的问题,我花了几个小时来解决我的问题。罗伯特的答案部分帮助了我,尽管无论回复与否,我的中继器仍在进行数据绑定,但问题仍然存在。经过大量的研究,我发现了一个帖子,建议设置 UseSubmitBehavior =“false”,宾果游戏,它解决了这个问题。希望这会有所帮助。