文档章节

System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/>

 我是骗子
发布于 2016/05/19 23:24
字数 979
阅读 18
收藏 0

转载自http://blog.csdn.net/dongge825/article/details/7868151

 

关于在同一个页面中使用Gridview控件的时候发现气updaeting事件无法被服务器所响应,看来它的错误报警然后查询了部分资料现在将整理的解决方法总结如下:点击update 事件无法响应原因出在回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回 调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
         异常详细信息: System.ArgumentException: 回发或回调参数无效。在配置中使用 < pages enableEventValidation="true"/> 或在页面中使用 <% @ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数 是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

       看了半天也没发现是什么问题,检查了一遍代码也是对的,页面所有控件的ID,属性都检查了还是没找到问题。后来才发现是这么回事:

发生条件:
1.画面有隐藏控件。
2.多次的Gridview绑定。

3.多个Form中嵌套使用。
发生原因:
.NET基于页面中的输出元素会在最终页面中生成一个__EVENTVALIDATION隐藏字段。做了一个简单的测试。页面中创建一个<asp: button id="btnSubmit" runat="server" text="Submit" tooltip="Submit" />,同时创建对应的Click事件处理程序。运行程序,可以正确响应事件。然后设置btnSubmit.Visable=false,手动在页面 上面添加<input type="submit" name="btnSubmit" value="Submit" />。运行程序,会出现一个包含EnableEventValidation内容的异常。设置<@Page EnableEventValidation="false">再运行程序,又可以正确响应事件。观察前后两次__EVENTVALIDATION 的内容,可以发现是不同的。关于出现的异常,可以认为在输出的时候没有包含btnSubmit,可是再提交到后台的时候却有相应的内容,前后不一致,所以 在开启事件校验的情况下.NET抛出了异常。

解决办法1:
Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //绑定数据;
    }
}
解决办法2:
<pages enableEventValidation="false"/>

 1、在页面的<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 中添加 EnableEventValidation="false" 就可以了。(首先考虑的)

2、通过web.config 
<system.web> 
<pages enableEventValidation="false"/> 

3、是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。 

4、如果页面含有 DropDownList 或 ListBox这样的控件,可能以下原因造成: 

4.1 在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
4.2 原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.最好在web.config中添加如下语句:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>因为 POSTBACK 如果不采用 UTF-8 编码, JAVASCRIPT 会认为有问题。
只改 requestEncoding="utf-8" 就可以了,responseEncoding="utf-8" 不用 

5.Register For Event Validation 
其原理就是让asp.net记录这个postback value. 
RegisterForEventValidation必须在render时调用.

本文转载自:http://www.cnblogs.com/iSuwei/p/3627657.html

共有 人打赏支持
粉丝 0
博文 4
码字总数 0
作品 0
武汉
程序员
ajax实现DropDownList的更新,但是点击 按钮控件时出错,为什么?

回发或回调参数无效。在配置中使用 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的...

xxdd
2013/05/17
278
2
【转】DataList控件里添加Button,运行点击出现“回发或回调参数无效”的解决办法

DataList控件里添加Button,运行点击出现“回发或回调参数无效”的解决办法 2009-04-23 21:21

cxycappuccino
2010/04/23
0
0
回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证

1. 当在子窗口中选择车辆信息并返回车牌号时,单击选择按钮后会出现编译错误: “/”应用程序中的服务器错误。 ------------------------------------------------------------------------...

技术小胖子
2017/11/08
0
0
[求指教]httpclient构造post请求出现错误

大家好, 最近在用Httpclient模拟构造了一个post请求,参数,post url地址等信息都是正确的,但是服务器返回以下的信息,由于本人对asp.net开发的服务器端不太了解,所以求前辈不吝赐教,谢谢...

算法与编程之美
2012/11/06
1K
1
artDialog基本使用

配置参数 content: {消息内容,支持HTML} title: {标题.默认:'提示'} lock: {是否锁定屏幕. 默认:false} width: {宽度,支持em等单位. 默认:'auto'} height: {高度,支持em等单位. 默认:'auto'...

笨小熊
2015/09/14
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

spring 事件

ContextRefreshedEvent Event raised when an {@code ApplicationContext} gets initialized or refreshed. ContextClosedEvent Event raised when an {@code ApplicationContext} gets clos......

Canaan_
39分钟前
1
0
leetcode两数之和

leetcode中求两数之和解决方法 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。 你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。 给定 nums = [2, 7, 11, ...

lar555
55分钟前
1
0
js实现限制网页内容复制

转载 在我们做的网页发到网上后,如果访客看到比较喜欢的内容,只要复制就可以变为自己的,自己辛辛苦苦弄半天还不及人家的一下复制,有时为了只让访客看到,而不能让它们复制内容,就用Jav...

lc_comeon
59分钟前
1
0
jenkins将spring boot项目发布到阿里云镜像中

1、spring boot项目 1.1 pom.xml配置 <artifactId>xxx-docker</artifactId><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.......

xixingzhe
今天
0
0
qsv格式可以在电视上播放吗

  大家都知道qsv格式是爱奇艺的独家缓存格式,是加密的,一般的播放器是无法播放的,只能在爱奇艺播放器上播放,如果想要在电视上播放,就必须要安装爱奇艺播放器,比较麻烦。其实还有一种...

萤火的萤火
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部