下午看一篇文章,感觉对以后自己开发有点用途,摘抄下来。
原文出处:
http://www.cnblogs.com/weapon/archive/2013/06/23/3150584.html
最近项目中运用了地区三级联动,用的是最普通的DropDownList回发来实现的,如下图
[caption id="" align="alignnone" width="448"]

三级联动[/caption]
一直用着都挺好的,可最近客户最近新换了台服务器,我把网站迁移过去就有了问题,三级联动失效了。
首先申明一点,这个三级联动虽然是用服务器控件做的,但代码是没有错的,我一点可以确认,不是网上经常看到的那些服务器控件属性设置不对或方法使用不正确。
网站运行环境
新服务器:Windows Server2008 64位系统,IIS7,应用程序.net Framework 版本4.0、托管管道为集成模式、32位兼容模式。
原服务器:Windows Server2008 32位系统,IIS7,应用程序.net Framework 版本4.0、托管管道为集成模式。
本地开发:Windows 7 32位系统,IIS express 8,VS2012
测试环境:我自己机器上 IE10,Firefox21,Chome27,同事机器上IE6、7、8、9外加360,遨游、QQ之类的浏览器。
测试结果:只有在新服务器和IE10组合时开会出现错误(就是DropDownList控件的OnSelectedIndexChanged事件失效、现象就是下拉框更改选择后页面不回发了)。
附:对新服务器中网站的抓包如下
[caption id="" align="alignnone" width="826"]

IE10[/caption]
[caption id="" align="alignnone" width="955"]

Chrome[/caption]
[caption id="" align="alignnone" width="1224"]

Firefox[/caption]
从源码可以看出,服务器返回给IE10的Html代码中没有onchange事件。
在网上找了下相关的说明:
http://www.hanselman.com/blog/BugAndFixASPNETFailsToDetectIE10CausingDoPostBackIsUndefinedJavaScriptErrorOrMaintainFF5ScrollbarPosition.aspx
发现这原来是.NET的一个bug,简单点说就是:在.net2.0-.net40的时候,IE10还没有出来,所以服务器的ASP.NET在解析成用户浏览的页面的时候发现他们是未知的浏览器,默认就用低级别的进行打开,低级别默认是不支持javascript的,所以就提示这样的错误。

解决方法:
对于这个问题,微软当然已经有相关的补丁了,可通过下面这个链接,打上相关的补丁即可解决。
http://www.microsoft.com/zh-cn/download/details.aspx?id=28936