我正在处理一个asp.net Web应用程序,在客户端操作一些控件(更新面板中嵌套的html按钮)后遇到此错误:
“回发或回调参数无效。事件验证是使用配置中的或页中的〈%@ Page EnableEventValidation=“true”%〉启用的。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。"
给出的堆栈跟踪为:
"[参数异常:回发或回调参数无效。事件验证是使用配置中的或页中的〈%@ Page EnableEventValidation=“true”%〉启用的。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现这些事件的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。]
系统.Web.用户界面.客户端脚本管理器.验证事件(字符串唯一ID,字符串参数)+9832822系统.Web.UI.控件.验证事件(字符串唯一ID,字符串事件参数)+114系统.Web.用户界面. Web控件.下拉列表.加载发布数据(字符串postDataKey,名称值集合postCollection)+65系统.Web.用户界面. Web控件.下拉列表.系统.Web.用户界面.IPostBackDataHandler.加载PostData(字符串postDataKey,名称值集合postCollection)+18系统.Web.用户界面.页面.处理PostData(名称值集合postData,布尔值fBeforeLoad)+471系统.Web.用户界面.页面.处理请求主页面(布尔值包含异步点之前的阶段,布尔值包含异步点之后的阶段)+1897”
这个堆栈跟踪是无用的,因为它没有告诉我是什么控件导致了这个问题。我想我理解了这个错误试图表达的基本内容,但是没有一个方向,它完全是一个垃圾,从哪里开始寻找,特别是因为我没有操作任何下拉列表。
在我经历发布代码的麻烦之前,我如何获得错误的完整堆栈跟踪(显示文件和行号)来找出发生了什么?我已经在这个问题上工作了一个星期,我已经受够了。谢谢。
1条答案
按热度按时间3qpi33ja1#
嗯,这会发生在一个按钮点击上吗?试着把任何控件验证器移到页面的顶部,看看是否有帮助。我猜一些关于错误“何时”发生的细节。(它会发生在第一次页面加载时,还是由于一些按钮点击?你有没有说JavaScript的一些部分可能在页面100%呈现之前就发布了?我的意思是,添加到页面的东西一定已经“开始”了这个问题的发生.但是,我们猜测的太多了.你可以作为一个测试在web配置关闭页面验证,至少看看是否工作,然后尝试修复,然后重新启用.
此外,您是否在页面加载时将数据加载到一些控件中?
然后尝试将“设置”和“数据加载”放在!IsPostback中(所有页面都非常需要并拥有它,对吗??)。
因此,在页面加载事件中,将数据加载和设置代码放在!IsPostBack块中,如下所示:
所以,如果你有代码要加载,比如一个网格视图,甚至一个下拉框,就采用上面的方法。我看过上面的“简单”代码修改修复你的错误,而且看过很多次。