【问题标题】:"Invalid postback or callback argument" with Databound controls带有数据绑定控件的“无效回发或回调参数”
【发布时间】:2010-09-22 13:31:13
【问题描述】:
当我的数据绑定控件上发生事件(添加/编辑/删除)时,我收到以下错误。
回发或回调参数无效。
使用 in 启用事件验证
配置或 在一个
页。为了安全起见,这
功能验证参数
回发或回调事件起源
从服务器控制
最初渲染它们。如果数据
是有效的和预期的,使用
ClientScriptManager.RegisterForEventValidation
方法来注册
回发或回调数据
验证。
我正在使用自定义 DataList 控件,但是 GridView、DetailsView、FormView 和 Repeater 控件(可能还有其他数据绑定控件)也会出现此问题。
我能找到的答案告诉我关闭配置文件或页面中的验证,但这听起来不像是最好的解决方案。我做错了什么?
【问题讨论】:
标签:
.net
asp.net
gridview
【解决方案1】:
问题是在页面 Load 事件中为控件加载数据并调用 DataBind() 方法。但是,如果在引发事件之前调用 DataBind() 方法,则会在控件命名发生更改时生成上述异常。
解决办法是把这个改成if(!IsPostback) DataBind(),然后在事件处理程序的最后调用DataBind()方法。无论如何,您大部分时间都需要在处理程序结束时调用它以影响更改。
如果这不是您的问题,并且您正在使用 JavaScript 修改控件客户端,请查看 this article。
这是一篇自我回答的帖子,因为我在博客上收到了很多关于这个问题的回复,我想我可能会进一步分享。
【解决方案2】:
谢谢你。我遇到了这个问题,你的自我回答帮助我解决了这个问题。
在每个事件处理程序结束时调用 DataBind() 方法的另一种方法是在页面 PreRender 事件中执行一次。
【解决方案3】:
我遇到了同样的问题,我花了几个小时才解决我的问题。罗伯特的回答部分帮助了我,尽管数据绑定了我的转发器,无论是否回发,问题仍然存在。经过大量研究后,我发现了一篇建议设置 UseSubmitBehavior="false"、宾果游戏的帖子,它解决了这个问题。希望这会有所帮助。