asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法
asp.net使用framework2时,如果使用了Validator控件,如RequiredFieldValidator,当ios系统设备如ipad,iPhone访问网站,valitator控件会无效,这个是由于framework2浏览器配置(路径:C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG\Browsers)没有对ios系统下新浏览器做配置造成,导致无法识别此浏览器而没有发送验证代码到客户端,从而无法在客户端直接用js验证信息,而是回发服务器后有服务器端验证后设置验证控件的错误信息,由于刷新了一次页面,体验比较差(呵呵,直接拖微软的控件个人觉得还是比较懒的表现,喜欢自己手写js验证。)
可以通过下面2张图片对比可以看出来,ios(用浏览器模拟)下表单form没有添加验证事件,并且缺少验证主要js文件,只加载了一个公共js类库。
android系统表单存在onsubmit验证事件,并且加载了验证js文件,高亮所示
ios系统表单无验证事件,并且只加载了公共js类库,没有加载验证的js文件
解决办法有3种
1)网站程序池更换framework版本为4,framework4新增了ios新版浏览器的配置文件
下面2个针对framework2.0的,增加浏览器配置
2)修改网站web.config,在System.web节点下增加新浏览器ua
一下代码来源:https://forums.asp.net/t/2029045.aspx
<system.web> <browserCaps> <filter> <case match="AppleWebKit/6\d\d"> EcmaScriptVersion = 1.4 w3cdomversion = 1.0 supportsCallback = true </case> <case match="AppleWebKit/85\d"> EcmaScriptVersion = 1.4 w3cdomversion = 1.0 supportsCallback = true </case> <!--更多新版本浏览器ua--> </filter> </browserCaps> 。。。。。其他配置
3)在网站根目录下添加App_Browsers文件夹,新建safari.browser文件,输入下面内容新增浏览器版本
以下代码来源:https://stackoverflow.com/questions/25978746/ios-8-safari-8-not-working-with-asp-net-ajax-extensions
<browsers> <browser id="Safari60_bugfix" parentID="Safari60"> <identification> <capability name="appleWebTechnologyVersion" match="^\d{3,}$" /> <!-- At least 3 digits --> </identification> <capabilities> <!-- Same as in "Safari1Plus" --> <capability name="ecmascriptversion" value="1.4" /> <capability name="w3cdomversion" value="1.0" /> <capability name="supportsCallback" value="true" /> </capabilities> </browser> <browser id="Safari85_bugfix" parentID="Safari85"> <identification> <capability name="appleWebTechnologyVersion" match="^\d{3,}$" /> <!-- At least 3 digits --> </identification> <capabilities> <!-- Same as in "Safari1Plus" --> <capability name="ecmascriptversion" value="1.4" /> <capability name="w3cdomversion" value="1.0" /> <capability name="supportsCallback" value="true" /> </capabilities> </browser> </browsers>
做了任意一个修改,刷新页面就可以看到iso系统加载的资源和android,pc端效果一样了。
测试地址:/demo/bb.aspx,没有ios设备的可以使用pc端的chrome进行模拟,完全和手机端效果一直,谷歌就是nb啊。。自此asp.net framework2.0 验证控件Validator在ios/iphone/ipad直接客户端验证,不需要再次回发服务器进行验证
加支付宝好友偷能量挖...
原创文章,转载请注明出处:asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法