2009-03-04 76 views
0

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


无效的回发或回调参数。使用配置中的<pagesenableEventValidation="true"/>或页面中的<%@ Page EnableEventValidation="true" %>可启用事件验证。为了安全起见,此功能验证回发或回调事件的参数来自最初呈现它们的服务器控件。如果数据有效且预期,请使用ClientScriptManager.RegisterForEventValidation方法为注册回发或回调数据进行验证。 “


有谁知道什么可能导致此?

+1

需要更好地描述页面实际正在做什么,可能需要一些代码 – AnthonyWJones 2009-03-04 21:00:46

回答

0

最常见的原因这个错误出现(对我来说)是当你势在必行创建控件自己(在后台代码),而不是声明地在.aspx文件中,特别是在初始页面渲染过程中创建一组控件,并且在回发期间,页面创建逻辑创建一个(可能略有不同的)一组控件。在每次页面呈现时创建并添加到树中的相同位置,无论是否回发。否则可能导致此错误。

此错误也可能有其他原因,但这是我见过它的唯一场景。

0

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

1

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

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

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

0

This event validation mechanism reduces the risk of unauthorized postback requests and callbacks. With this model, a control registers its events during rendering and then validates the events during the post-back or callback handling. All event-driven controls in ASP.NET use this feature by default.

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

你可以尝试:

除非需要还可以确保绑定中完成的 - Page.IsPostBack

0

如果您的弹出(或别的)被注入什么成不回发的形式,那么!可能是错误的根源。

我有这个错误,当使用手动有线jQuery的ajax调用来更新级联选择列表(比aspnet ajax快得多),被放入第二选择(这是runat =服务器)的新值导致事件验证失败。您可以通过脚本管理器(我觉得有点痛苦)来注册它,或者禁用事件验证,但这确实意味着要更加努力并自己验证它。