ajax省级联动 回发或回调参数无效
时间:2010-09-11 来源:蓝丶 sky
今天在做项目有个修改内容的,有个地方用到省级联动,现在一般都用ajax,很少用auto什么的那个属性了
想想ajax做省级联动也很简单,就开始做了,没想到在修改的时候提示回发或回调参数无效,然后去网上找了好久
网上的方法
1、在页面的<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 中添加 EnableEventValidation="false" 就可以了。(首先考虑的)
2、是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
3、如果页面含有 DropDownList 或 ListBox这样的控件,可能以下原因造成:
3.1 在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
3.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" 不用
可是按照网上的方法还是不可以!
EnableEventValidation="false" 用这个属性其实后台是取不到值的
出错的原因详细想了下,是由于用了ajax获取数据,然后拼接到DropDownlist,可是当点击按钮的时候由于回发,DropDownList值没有了,后台取不到值引起的
想了好久,最后换成select控件,然后用Request.Form[]解决了