您的位置:首页 > 编程语言 > ASP

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

2010-08-05 17:34 295 查看
回发或回调参数无效。在配置中使用 或在页面中使用 <%@ 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

各位还有其他解决此错误的方法的话,请赐教。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐