当我的数据绑定控件上发生事件(添加/编辑/删除)时,我收到以下错误.
无效的回发或回调参数.使用配置或页面中的<%@ Page EnableEventValidation ="true"%>启用事件验证.出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件.如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证.
我正在使用自定义DataList控件,但GridView,DetailsView,FormView和Repeater控件(以及可能与其他数据绑定控件)也会出现此问题.
我能找到的答案告诉我在配置文件或页面中关闭验证,但这听起来并不像是最好的解决方案.我究竟做错了什么?
问题是在页面Load事件中加载控件的数据并调用DataBind()方法.但是,如果在引发事件之前调用DataBind()方法,则会出现上述异常,因为控件命名已更改.
解决方案是将其更改为if(!IsPostback)DataBind(),然后在事件处理程序的末尾调用DataBind()方法.无论如何,在处理程序结束时,您需要大部分时间调用它来影响更改.
如果这不是您的问题,并且您正在使用JavaScript修改控件客户端,请查看本文.
这是一篇自我回答的帖子,因为我在我的博客上收到了很多关于此问题的回复,并认为我可能会进一步分享.
这次真是万分感谢.我遇到了这个问题,你的自我回答帮助我解决了这个问题.
在每个事件处理程序结束时调用DataBind()方法的替代方法是在页面PreRender事件中执行一次.