在项目中使用ajxpro2.dll 级联dropdownlist发生错误如下: 回发或回调参数无效。在配置中使用
或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 在网上查了下有不少解决办法 说是这几种情况引起的 一是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。 二是在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项 原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了. 网上还有一种解决办法:把 EnableEventValidation 属性设置为false;但是这样只是没有警告框而已.数据仍然无法传递给服务器,导致SelectedIndex 值一直为零. 最好在web.config中添加如下语句:
结果搞定,现在贴到这里希望对大家能够有所帮助. 如果按网上那种方法添加EnableEventValidation后会发现级联不起作用了, 对于上面说的 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了 经过试验发现也不是这个的原因 在config中添加
可是我的config中本来就有这个 最后查找MSDN发现EnalbeEventValidation 是用来验证回发的数据是否有效,如果无效自然就会报这个错误,那我们反过来想为什么会回发的数据无效呢,因为我使用的是js给第二个dripdownlist赋值,只看级联没有问题,但是当点击页面的按钮查询数据时候就会报这个错误,原因是第二个dropdownlist使用的是asp.net控件,点击按钮的时候.net的机制会记录当前控件的状态,并在数据回填的时候进行验证,可是这时候我的第二个dropdownlist被重新绑定了,所以查找不到对应的数据,就会报这个错误,解决办法是将asp.net控件替换成html控件,这样.net机制就不会记录html控件的值,也就不会报这个错误了。这样可以使用reqest.form["name"]在后台得到dropdownlist的值,之后处理。 如果想要使用dropdownlist控件的话,后台不要动态绑定第二个dropdownlist,使用js为其赋值,但是要将EnableEventValidation设置为false
解决使用Ajax级联发生回发或者回调的参数无效!
最新推荐文章于 2015-07-14 11:27:01 发布