C# ASP.NET回发错误

C# ASP.NET回发错误,c#,asp.net,C#,Asp.net,我使用C打开一个弹出窗口,允许用户从中选择一些值,并将值发送回服务器。但是,当我关闭弹出窗口时,出现以下错误: 回发或回调参数无效。在配置或页面中使用启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合要求,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证 有人知道这可能是什么原因吗?对我来说,出现此错误的最常见原因是您在代码隐藏中强制创建控件,而不是在.a

我使用C打开一个弹出窗口,允许用户从中选择一些值,并将值发送回服务器。但是,当我关闭弹出窗口时,出现以下错误:

回发或回调参数无效。在配置或页面中使用启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合要求,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证


有人知道这可能是什么原因吗?

对我来说,出现此错误的最常见原因是您在代码隐藏中强制创建控件,而不是在.aspx文件中声明。特别是在初始页面呈现期间,您创建了一组控件,而在回发期间,页面创建逻辑创建了一组可能略有不同的控件。无论是否回发,每次呈现页面时都必须创建页面上的所有控件并将其添加到树中的相同位置。否则会导致此错误


此错误可能还有其他原因,但这是我见过的唯一一种情况。

关闭事件验证。只要您自己检查表单值并确保不接受无效值,就完全没有必要这样做。

我在将值发回包含HTML标记或其他受限字符的表单时看到此错误。默认情况下,.NET出于安全原因阻止此操作

在关闭表单时,检查要发回页面的值,以查看是否在其中一个输入值中发送任何标记

如果必须发送此类数据,请禁用ASPX页面上的EnableEventValidation属性,并确保应用验证以防止注入

此事件验证机制 降低未经授权的风险 回发请求和回调。具有 在这个模型中,一个控件注册它的 渲染期间的事件,然后 在测试期间验证事件 回发或回拨处理。全部的 ASP.NET使用中的事件驱动控件 默认情况下,此功能不可用

您可以在页面或web.config中关闭EnableEventValidation,但这被认为是一种安全风险

您可以尝试:


除非有必要,否则请确保在-中完成绑定!Page.IsPostBack

如果您的弹出窗口或任何其他内容正在向执行回发的表单中注入任何内容,则这可能是错误的来源


我在使用手动jquery ajax调用更新级联选择列表时遇到了这个错误,更新速度比aspnet ajax快得多,在runat=server的辅助选择中输入的新值导致事件验证失败。您可以在脚本管理器中注册所有内容(我觉得这有点痛苦),也可以禁用事件验证,但这确实意味着您需要更加努力地工作,自己验证所有内容。

需要更好地描述页面实际执行的操作,可能需要一些代码