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

解决|控件|问题

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

<html>
<head>
</head>
<body>

<form runat="server" id="Form1" >
<asp:TextBox id="Text1"
runat="server" />

<asp:CustomValidator id="CustomValidator1"
ClientValidationFunction="ClientValidate"
Display="Static"
ErrorMessage="不能为空!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<br/>
<asp:Button id="Button1"
Text="Validate"
runat="server"/>
</form>

</body>
</html>

<script language="javascript">
<!--
function ClientValidate(sender, args)
{
if(Form1.Text1.value.length<=0)
{
args.IsValid = false;
}else{
args.IsValid = true;
}
}
// -->
</script>

问题分析:
与所有其它验证控件类似(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" %>

<html>
<head>
</head>
<body>

<form runat="server" id="Form1" >
<asp:CheckBox id="CheckBox1" runat="server"></asp:CheckBox>
<asp:TextBox id="Text1"
runat="server" />

<asp:CustomValidator id="CustomValidator1"
ClientValidationFunction="ClientValidate"
Display="Static"
ErrorMessage="不能为空!"
ForeColor="green"
Font-Name="verdana"
Font-Size="10pt"
runat="server"/>
<br/>
<asp:Button id="Button1"
Text="Validate"
runat="server"/>
</form>

</body>
</html>

<script language="javascript">
<!--
function ClientValidate(sender, args)
{
if(Form1.CheckBox1.checked&&Form1.Text1.value.length<=0)
{
args.IsValid = false;
}else{
args.IsValid = true;
}
}
// -->
</script>

时间: 2025-01-20 21:47:36

解决CustomValidator控件不能验证控件值为空的问题的相关文章

ASP.NET 2.0服务器控件之实现验证控件

asp.net|服务器|控件 为了更好的创建交互式Web应用程序,加强应用程序安全性(例如,防止脚本入侵等),开发人员应该对用户输入的部分提供验证功能.过去,输入验证功能基本由自行编写的客户端脚本来完成这种实现方法既繁琐,又容易出现错误.随着技术的发展,ASP.NET技术通过提供一系列验证控件来克服这些缺点,例如,RequiredFieldValidator.CompareValidator.RangeValidator等.使用这些验证控件,开发人员可以向Web页面添加输入验证功能,例如定义验证

转:ASP.NET验证控件详解

asp.net|控件|详解 ASP.NET验证控件详解 ASP.NET是微软推出的下一代WEB开发工具,其强大的功能立即吸引了一大批WEB开发者投入它的靡下.现在,我们来看看ASP.NET的验证控件,感受ASP.NET的强大功能同时方便我们现在的WEB开发. WEB开发者特别是ASP开发者,一直对数据验证比较恼火,当你好不容易写出数据提交程序的主体以后,还不得不花大把时间去验证用户的每一个输入是否合法.如果开发者熟悉JavaScript或者VBScript,可以用这些脚本语言轻松实现验证,但是又

ASP.NET公有六种验证控件 功能描叙

RequiredFieldValidator(必须字段验证) 用于检查是否有输入值 CompareValidator(比较验证) 按设定比较两个输入 RangeValidator(范围验证) 输入是否在指定范围 RegularExpressionValidator(正则表达式验证) 正则表达式验证控件 CustomValidator(自定义验证) 自定义验证控件 ValidationSummary(验证总结) 总结验证结果 下面,我们来看这些控件的使用 一:RequiredFieldValida

100分求CustomValidator验证控件的问题

问题描述 上传图片,用的是服务器端控件FileUpload,想用CustomValidator验证图片上传的大小,不想在后台判断,请问代码应该怎么写啊,在此跪求了,图片上传大小控制在200k 解决方案 解决方案二:用CustomValidator来验证这个好像不好弄吧,你用JAVASCRIPT来控制呢百度里搜一下,有很多这样的资料的解决方案三:靠JShttp://blog.csdn.net/drago37net/archive/2006/09/12/1214938.aspx参考下...解决方案四

一个&amp;amp;lt;div&amp;amp;gt;里放了两个验证控件,第二个控件显示时候,位置总被第一个占住了,中间有很长的空白,大家是如何解决的?

问题描述 一个<div>里放了两个验证控件,第二个控件显示时候,位置总被第一个占住了,中间有很长的空白,大家是如何解决的?<asp:RequiredFieldValidatorID="RequiredFieldValidator1"runat="server"ControlToValidate="txtUserID"ErrorMessage="*不能为空."></asp:RequiredField

使用CustomValidator自定义验证控件检查是否有对ListBox控件选择_实用技巧

在前网页前端处,我们放置ListBox控件,在数据提交前,检查用户是否有对此控件进行选择? Insus.NET的方法是使用Javascript与CustomValidator自定义验证控件来检查. 可以看到最终结果:  你也想参此例子,可以参考下面数据与准备方法,写一个对象,它将用来产生十个天干. HeavenlyStem.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using

验证控件进行分组解决办法

大概实现过程如下: 1,给验证控件添加属性:ValidationGroup="vgA"(组名随便写) 2,修改保存按钮的属性:CausesValidation=false 3, 给保存按钮添加OnClientClick= ValidateByGruop()   代码如下:      function  ValidateByGruop ()     {      var retval=false ;      var val = $('#<%=下拉列表控件ID.ClientID %

ASP.NET讲座(3)-输入验证控件

asp.net|控件 3.1 ASP.net解决了ASP的难题:验证表单填写的正确性 如今的商业网站,或者个人网站,多少都有客户调查啊,用户注册之类的东西,必然会用到表单,这些表单的填写正确与否,明显是由手写代码的方式来控制的.我承认编写代码,是一项有趣的工作,不过每次验证表单都来手写代码,我们希望提高我们的工作效率,并不是把我们很有限的时间花在表单的验证工作上. 基于另外的一些原因,Web应用程序很不好验证用户的输入,HTML 3.2 规范可以让你控制用户的反馈,但恶意的或者技术高超的用户可以

【ASP.NET】验证控件

在软件开发中,验证输入信息是否正确,这是必不可少的一项工作.就拿我们做过的机房收费系统来说,在登录的时候,我们需要对用户名和用户密码进行验证,判断是否为空,判断输入字符是否合理等等.这些工作,我们之前都需要编写一段又一段代码,依次进行验证.在ASP.NET中,学习到了验证控件,发现这些事情原来可以很容易就被解决的. 这篇博客就将ASP.NET中5个验证控件总结一下,也是为了以后能够更加方便熟悉的使用它们. (一)RequiredFieldValidator控件 其功能是要求用户必须为ASP.NE