数据绑定控件中出现“无效的回发或回调参数”。

14

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

无效的回发或回调参数。 使用配置中启用了事件验证 或在页面中使用 <%@ Page EnableEventValidation="true" %>。出于安全考虑,此功能验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。

我正在使用自定义的DataList控件,但也会在GridView、DetailsView、FormView和Repeater控件(以及其他一些数据绑定控件)中遇到这个问题。

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

3个回答

25
问题在于在页面加载事件中为控件加载数据并调用 DataBind() 方法。然而,如果在事件被触发之前调用 DataBind() 方法,则会生成上述异常,因为控件命名已更改。
解决方案是将其更改为 if(!IsPostback) DataBind(),然后在事件处理程序的末尾调用 DataBind() 方法。无论如何,您大多数时候都需要在处理程序的末尾调用它以影响更改。
如果这不是您的问题,并且您正在使用 JavaScript 在客户端修改控件,请查看此文章这是一个自我回答的帖子,因为我在我的博客上收到了很多关于这个问题的回复,所以想分享给更多人。

7

谢谢您的帮助。我之前遇到了这个问题,您的自答让我解决了它。

除了在每个事件处理程序的结尾调用DataBind()方法外,另一种方法是在页面的PreRender事件中只调用一次。


3

我遇到了同样的问题,花费了几个小时才解决。Robert的答案部分地帮助了我,尽管我无论是否回发都绑定了数据,但问题仍然存在。经过大量研究,我发现一篇文章建议设置UseSubmitBehavior="false",bingo!问题得到了解决。希望这可以帮到你。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接