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类库。

asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法
android系统表单存在onsubmit验证事件,并且加载了验证js文件,高亮所示
asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法
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端效果一样了。

asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法

  测试地址:/demo/bb.aspx,没有ios设备的可以使用pc端的chrome进行模拟,完全和手机端效果一直,谷歌就是nb啊。。自此asp.net framework2.0 验证控件Validator在ios/iphone/ipad直接客户端验证,不需要再次回发服务器进行验证

加支付宝好友偷能量挖...


原创文章,转载请注明出处:asp.net framework2.0验证控件在ios/iphone/ipad下无效解决办法

评论(0)Web开发网
阅读(83)喜欢(0)Asp.Net/C#/WCF