问题标签 [event-validation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1247 浏览

asp.net - EventValidation - 少数请求中缺少 __EventValidation 值

我们在更新面板中有一个文本框,它在文本更改时回发。对服务器的 1000 个 POST 请求中大约有 1 个缺少 __EventValidation 表单元素(我们使用日志验证,当发生此异常时,请求缺少此表单元素)

由于这种情况并非始终如一,因此我们排除了任何编码问题。我们怀疑用户甚至在表单完全加载之前就发布了表单。


问题:如果我们没有通过覆盖 Render 方法来执行任何 Response.Flush,是否可以将此 __EventValidation 元素移动到表单的顶部而不是底部?

0 投票
6 回答
3132 浏览

.net - 无效的回发或回调参数

这个问题好像以前也有人问过,但我感觉我的情况略有不同。

我有一个包含gridview 的页面。当按下按钮编辑gridview 中的一条记录时,该按钮首先执行一些客户端脚本,该脚本会弹出一个模式窗口以进行编辑(使用.onClientClick 设置)。从这个弹出窗口中,用户点击更新数据库并关闭窗口。一旦窗口关闭,按钮的服务器端代码应该会触发,这将调用函数来刷新gridview。相反,我收到错误消息:

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

真正让我恼火的是,我在不同的页面上使用了完全相同的逻辑,而且效果很好。

关于如何避免这种情况的任何建议?

更新:我已经删除了添加客户端脚本的代码行,但仍然出现错误。所以我相当肯定它只是由回发引起的。经过仔细检查,我意识到实际上有一些 ListItems 以编程方式绑定到 DropDownLists。所以......我可能需要做 ClientScriptManager.RegisterForEventValidation 的事情......有人可以给我一个例子来说明这样做的语法是什么样的吗?似乎与 ScriptManager 对象的设置不同......

0 投票
1 回答
329 浏览

asp.net - javascript关闭时的中继器控制

我有一个嵌套一个或多个自定义控件实例的中继器。每个自定义控件实例都有一个下拉菜单和一个名为“更新”的按钮。

当 JS 打开时,这一切都很好。

但是,关闭 JS 后,我收到“无效的回发或回调参数。启用事件验证...”错误。

考虑到这一点,我想会发生以下情况:

ASP.NET 为页面创建 ViewState。回发页面时,应通过 ASP.NET 放置的 js 挂钩将视图状态传递回页面。
但是,由于 JS 处于关闭状态,因此不会传回。然后,ASP.NET 标记它期望的 ViewState 和它接收的 ViewState 之间的不匹配。

这个对吗?

在这种情况下,我建议采取什么行动?

谢谢

0 投票
0 回答
50 浏览

javascript - 如何使用 Javascript 检查我的复选框而不会导致事件验证错误?

我有一个网格视图,模板字段中带有复选框,用于一次删除一行或多行。然后我有一个按钮,可以回发到服务器并删除选中复选框的任何行。这很好用。我最近添加了一个按钮,该按钮通过使用 JavaScript 选中每个框然后回发并运行相同的函数来删除选中的行来自动删除所有行。这也有效,但在那之后(使用我的“删除所有按钮”),任何其他回发都会导致事件验证错误,我认为这是由使用 JavaScript 检查我的所有框引起的。

错误:

PageOmitted中第 885 行第 13 列未处理的异常

0x800a139e - JavaScript 运行时错误:Sys.WebForms.PageRequestManagerServerErrorException:回发或回调参数无效。使用配置或页面中的 <%@ Page EnableEventValidation="true" %> 启用事件验证。出于安全目的,此功能验证回发或回调事件的参数是否源自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法注册回发或回调数据以进行验证。

首先,对我来说很奇怪,错误是在下一个帖子中弹出,而不是导致问题的那个。但我的问题是我该怎么做才能通过事件验证?有没有简单的方法可以做到这一点?我查看了 MSDN 上的错误中提到的“RegisterForEventValidation”方法,但我无法做出正面或反面……任何选择?