解决CustomValidator控件不能验证控件值为空的问题

翻译|其它|编辑:郝浩|2005-03-08 14:25:00.000|阅读 2367 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>


在论坛上看到有关CustomValidator控件验证控件值为空的问题
http://community.csdn.net/Expert/topic/3772/3772658.xml?temp=.9461634,正好我也遇到过,解决方法就是不要指定CustomValidator 控件的ControlToValidate,这样在提交的时候回进行验证
,代码如下:

<%@ Page Language="C#" AutoEventWireup="True" %>







runat="server" />

ClientValidationFunction="ClientValidate"
Display="Static"
ErrorMessage="不能为空!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>


Text="Validate"
runat="server"/>







问题分析:
与所有其它验证控件类似(RequiredFieldValidator 除外),如果输入字段为空,则认为 CustomValidator 有效。所以造成CustomValidator没有办法验证空值, 让ControlToValidate 为空,客户端函数每次尝试提交时总会触发一次,这样就可以实现在提交时验证控件为空
以下信息摘自MSDN:http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/cpref/html/frlrfSystemWebUIWebControlsCustomValidatorClassTopic.asp


注意 如果输入控件为空,则不会调用任何验证函数,并且验证将成功。使用 RequiredFieldValidator 控件要求用户在输入控件中输入数据。
可以在不设置 ControlToValidate 属性的情况下使用 CustomValidator 控件。这种情况通常出现在验证多个输入控件或是验证无法与验证控件一起使用的输入控件(如 CheckBox 控件)时。这种情况下,传递给 ServerValidate 事件的事件处理程序及客户端验证函数的 arguments 参数的 Value 属性将始终包含一个空字符串 ("")。但是,合适时仍将调用这些验证函数,以确定服务器和客户端的有效性。若要访问进行验证的值,您必须通过编程方式引用所要验证的输入控件,然后从相应的属性中检索该值。例如,若要验证服务器上的 CheckBox 控件,请不要设置验证控件的 ControlToValidate 属性,并将下列代码用于 ServerValidate 事件的处理程序。


用途:
您可能会说既然不为空,干嘛不用RequiredFieldValidator,当然是有原因的,比如我有个复选框,我想实现只有选择这个复选框的时候才要求某个文本框不为空,这样我就可以用下面的代码了:
<%@ Page Language="C#" AutoEventWireup="True" %>








runat="server" />

ClientValidationFunction="ClientValidate"
Display="Static"
ErrorMessage="不能为空!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>


Text="Validate"
runat="server"/>






标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP