在使用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. 阿里云大数据计算服务MaxCompute(下篇)
  2. 0x12.基本数据结构 — 队列与单调队列
  3. 如何衡量目标检测模型的优劣
  4. 迁移数据中心的三大风险与应对策略
  5. ASP.NET图形化的曲线图类
  6. 百个JavaScript函数以及基础写法汇总
  7. Silverlight 参考:三维效果(透视转换) -- MSN
  8. jenkins简单部署
  9. Maximum Subrectangle(矩阵,前缀和)
  10. 让数字保持在整数范围内
  11. 春天猫rtsy_春天重试,因为冬天来了
  12. docker保存日志文件到本地
  13. leetcode 1218 python
  14. POJ2987 Firing 最大权闭合图
  15. 银杏谷资本合伙人郑雨林:我为什么围绕阿里云生态做投资?
  16. python---用python实现选择排序
  17. 总结---Django部分
  18. 软件工程之图书管理系统总体设计
  19. centos 7下搭建wiki系统
  20. win10 企业版2016长期服务激活教程

热门文章

  1. 【MS二级】word高频考点
  2. [笔记]-jmh的使用记录
  3. MySQL 获取日期函数
  4. Confluence 6 设置其他页面为你空间的主页
  5. SpringSecurity权限管理框架系列(六)-Spring Security框架自定义配置类详解(二)之authorizeRequests配置详解
  6. 林地府邸java什么版本_我的世界1.11林地府邸介绍 关于林地府邸的资料攻略
  7. Windows环境下执行hadoop命令出现系统找不到指定路径Error
  8. 如何关闭ie默认下载!用IE下载东西后不提示打开
  9. Matlab系列之二维图形(上)
  10. 嵌入式单片机基础篇(三十六)之STM32F1SPI标准接口程序以及模拟SPI标准接口程序讲解