aspx 报错:回发或回调参数无效。在配置中使用 或在页面中使用 启用了事件验证。.....

本文探讨了ASP.NET中遇到的“回发或回调参数无效”错误,分析了可能的原因,包括表单嵌套和使用AJAX的下拉菜单。提供了多种解决方案,如修改web.config文件、禁用事件验证等,并提出了一种使用原生HTML select元素替代控件的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回发或回调参数无效。在配置中使用  或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

 

简单说下,我碰到这个错误的页面内容。

页面中,有2个 DropDownList 下拉框,联动的 , 加载的时候,从库中读取的数据,绑定到这2个下拉框中。

点击 button ,要返回到调用后台的方法保存数据。点击bottom 后,页面就报了上面的错误。

 

查了些资料,说是一下2中情况造成的

一是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
二是在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。

 

我检查过了,不会是from嵌套的原因。那可能就是第二种情况了。

如何解决呢? 找到了以下的几种方法。

1 在web.config中添加如下语句:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>

 

2 在<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

上加了一句EnableEventValidation="false"

 


方法1 我试过了,好像不太管用。不知道是不是在config中加的位置不对。(各位知道的,能否再详细的说明一下。)

方法2 没试过。

 

 

下面说说我的方法。

2个下拉框不使用DropDownList控件,该为使用 select 标签。

不用控件怎么绑定数据呢?当然可以。页面加载从库中读出数据后,生成JavaScript 的字符串。

用ClientScript.RegisterClientScriptBlock(Type,key script) 注册到页面中。然后在前台 window.onload 中调用那段JavaScript。

这时候,点击button 后就不会出现上面的错误了。

 

但是有个问题。提交后如何得到下拉框选中项的 value 呢?。

给select 加上 name ,然后用Request.Form["selName"]; 就可以得到选中项的value 了。

 

加入runat="server" 是没用的。得到的始终是null

 

各位还有其他解决此错误的方法的话,请赐教。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值