在使用ASP.NET Web Forms开发时,有时会给一些下拉控件,添加自定义验证,但由于对Validator使用的惯性,往往会设置它的ControlToValidate属性,如下代码所示:

<asp:DropDownList ID="DropDownList1" runat="server">
</asp:DropDownList>
<asp:CustomValidator ID="cvDdlGames" runat="server" ClientValidationFunction="ValidateGames" ControlToValidate="DropDownList1"
ErrorMessage="内容不正确" Display="Dynamic"></asp:CustomValidator>

如果设置了这个属性后,发现自定义验证控件不会工作,在浏览器中跟踪脚本的执行流程,也执行不到自定义验证方法ValidateGames,那原因是什么呢?

那就要看asp.net自带的JS脚本 了,通过跟踪发现,最终调用自定义方法的ValidateGames的方法是CustomValidatorEvaluateIsValid,如下所示:

function CustomValidatorEvaluateIsValid(val) {var value = "";if (typeof(val.controltovalidate) == "string") {//如果设置了ControlToValidate属性的话,就会进入到这里value = ValidatorGetValue(val.controltovalidate); //获取关联的控件的值,如果是TextBox的话,这里是能获取到值的,所以也没有问题,但如果要DeropdownList控件的话,这里获取到的value是空的if ((ValidatorTrim(value).length == 0) &&((typeof(val.validateemptytext) != "string") || (val.validateemptytext != "true"))) {return true;  //所以这里就提前返回了}}var args = { Value:value, IsValid:true };if (typeof(val.clientvalidationfunction) == "string") {eval(val.clientvalidationfunction + "(val, args) ;");}return args.IsValid;
}

所以在使用CustomValidator验证DropDownList控件的时候,不要设置ControlToValidate属性,虽然不设置此属性,但是并不影响它的使用,它照样会阻止当前页面的提交(当数据有逻辑错误的时候),所以可以放心使用

[ASP.NET]为什么CustomValidator验证控件在验证DropdownList的时候不能设置ControlToValidate属性...相关推荐

  1. asp.net夜话之九:验证控件(上)

        本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 CompareValidator控件 RangeVali ...

  2. Scott Mitchell 的ASP.NET 2.0数据教程之三十九:: 在编辑和插入界面里添加验证控件...

    原文 | 下载本教程中的编码例子 | 下载本教程的PDF版 导言 到目前为止的讨论编辑DataList的教程里,没有包含任何验证用户的输入,即使是用户非法输入- 遗漏了product的name或者负的 ...

  3. 风影ASP.NET基础教学 4 验证控件

    前言 无论什么应用软件系统,它最本质的功能和用途就是处理数据.这样,数据的安全性就成为了系统设计里面非常重要的话题,提交一些不安全的数据(如SQL注入.数据类型或者数据范围不合适等)常常会导致系统计算 ...

  4. asp.net夜话之九:验证控件

    本篇要讲述的知识点如下: 数据验证介绍 纯客户端脚本验证 asp.net验证控件概述 RequiredFieldValidator控件 CompareValidator控件 RangeValidato ...

  5. 第二章节 ASP.NET 验证控件(一)

    一.数据验证控件 1.常用的验证控件 ASP.NET提供了5种验证控件和1个摘要控件.可以在visual studio开发工具的工具箱中的"验证"栏目找到,如图所示: 如果验证控件 ...

  6. webform里的验证控件

    1.非空验证控件:RequireFieldValidator  :2.数据比较验证:CompareValidator :3.数据范围验证:RangeValidator :4.正则表达式验证:Regul ...

  7. NET中验证控件表达式汇总

    ASP.NET为开发人员提供了一整套完整的服务器控件来验证用户输入的信息是否有效.这些控件如下: 1.RequiredFieldValidator:验证一个必填字段,如果这个字段没填,那么,将不能提交 ...

  8. C#验证控件使用方法及常用正则表达式例析转

    原文链接地址:http://kinke0.blog.163.com/blog/static/6368308420086385229468/ ASP.NET为开发人员提供了一整套完整的服务器控件来验证用 ...

  9. javascript调用服务端验证控件

    //*******************Ajax 调用验证控件(客户端调用服务器验证控件)********************                 Page_ClientValida ...

最新文章

  1. Android 自定义圆形图片 CircleImageView
  2. redux-thunk的简单使用
  3. [Elasticsearch] 全文搜索 (一) - 基础概念和match查询
  4. linux mei swap,Linux swapoff命令
  5. Checking if your code is running on 64-bit PHP
  6. 从0到1 | 滴滴DB自动化运维实践了解一下
  7. 南京南站新建的,地铁换乘这么麻烦?
  8. 每日一句20191104
  9. word文档怎么压缩,word文档压缩方法
  10. vc6.0与vc2005配置对比
  11. 51单片机原理以及接口技术(一)-单片机发展概述
  12. dell电脑恢复出厂系统(旧电脑如何重装系统)
  13. Windows之——pid为4的system进程占用80端口的解决办法
  14. html-SVG-rect border width
  15. Java 是否应该使用通配符导入( wildcard imports)
  16. 个人项目-网络电话呼叫客户端 (一)
  17. QSqlQueryModel搭配QTableView使用卡死问题
  18. 量子计算与量子信息之量子力学引论(一)
  19. 对云计算机的想法,我对云计算技术的看法
  20. DVWA-Reflected XSS

热门文章

  1. java entryset key值_java – HashMap如何以及何时初始化entrySet并向其中添加值
  2. Sentinel:分布式系统的流量防卫兵 | Spring Cloud 19
  3. 网页设计和平面设计的区别在哪儿?
  4. import win32com.client 将xls改成xlsx,操作excel报错
  5. 日增30-40亿数据量的数据库
  6. markdown编辑工具推荐
  7. ES6新特性都有哪些
  8. 摄影民工于程序员民工对比怎么看
  9. 如何防止运营商网络劫持,避免被他人强行插入广告?
  10. 谷歌浏览器如何开启全黑模式