一次很简单的一个程序居然出现这个错误:
一个简单aspx页面,页面中有GridView,把执行分页的相关操作封装成Web用户控件后,应用到页面上,点击GridView控件的“排序”弹出错误,为了对比没封装成Web用户控件的页面就不出错。。。
以下是错误信息 回发或回调参数无效。在配置中使用
<pages enableEventValidation=”true”/> 或在页面中使用 <%@ Page EnableEventValidation=”true” %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。
在百度一搜有好多解决方法,但都是说以下两种错误:
1、Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
2、在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
3、把GridView绑定数据那块放进if(!Page.IsPostBack)里~~~就行啦~~。
后经过检查发现,在aspx页面的Page_Load事件中执行了GridView绑定的方法,而在Web用户控件中也有一个Page_Load事件,那里面重复写了一遍和aspx页面Page_Load事件中一样的代码,等于重复执行了一次GridView绑定,所以导致了该错误的出现,删除Web用户控件的Page_Load事件的内容,错误成功排除!!!太不细心了!