虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:
CompareValidator ——比较验证控件
RangeValidator ——范围验证控件
RegularExpressionValidator ——正则验证控件
RequiredFieldValidator ——必填验证控件
但是一直没去研究CustomValidator控件的用法,心中自然也有一种想法:好不容易从写js验证的痛苦中摆脱出来,如今是能不回去就不要回去了,但是有时候又会遇到一些用上面提到的验证控件没有办法做到的情况(当然是指在客户端没办法做到,我要是说在服务器端没办法做到就让大家笑掉大牙了),用自然想它在客户端完成验证了,至少也要先在客户端验证一下,通过客户端验证再到服务器端验证,这样减少数据的往返时间,降低网络流量和保证反应及时性。

CustomValidator 是一个提供灵活验证方式的控件,它也能在客户端和服务器端验证,分别提供了两种验证的方法原型:
服务器端验证:

void ServerValidation (object source, ServerValidateEventArgs args)

客户端验证(js):

function ValidationFunctionName(source, arguments)

无论对于客户端验证还是服务器端验证,设置通过验证的办法就是将第二个参数的IsValid属性设置为true即可,反之设置为false。

下面我以两个例子来讲述如何使用CustomValidator 来进行验证,第一个用法是用来验证TextBox,第二个用法是验证CheckBoxList,确保其中只能选中一项,而且必须选中一项,对于TextBox这类的控件,我这里设置了对应的CustomValidator 的ValidateEmptyText="True"属性,这样即使控件值为空也能得到验证。

全部代码如下(这里是cs代码和html代码混合的模式):

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="gb2312" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="CustomValidator控件用法" />
<meta name="description" content="周公讲述CustomValidator控件用法" />
<title>CustomValidator控件用法</title>
</head>
<script language="javascript" type="text/javascript">
function ClientValidateUserName(source, args) {
//alert(source);source=CustomValidator1,为验证控件
//alert(args);
var obj = document.getElementById("txtUserName");
if ((obj.value == "") || (obj.value.length > 10)) {
args.IsValid = false;
}
else {
args.IsValid = true;
}
} function CheckCheckBoxList(source, args) {
var obj = document.getElementById('<%=this.cbAgeRangeList.ID%>'); //返回具有和属性id的值相同或相似的对象集合
var k, right = false;
var length = (obj.all.tags('input').length); //返回obj对象里具有“input”标签对象的集合
for (k = 0; k < length; k++) {
//alert(" name:"+obj.all.tags('input')[k].name+"是否:"+obj.all.tags('input')[k].checked);
if (obj.all.tags('input')[k].checked) // obj对象里具有input标签对象键值为k的属性为checked的值
{
right = !right;
} }
if (right) {
args.IsValid = true;
}
else {
args.IsValid = false;
}
}
</script>
<script runat="server">
protected void Page_Load(Object Src, EventArgs E)
{
if (!IsPostBack) DataBind();
}
public void ServerValidateUserName(object source, ServerValidateEventArgs args)
{
if ((string.IsNullOrEmpty(txtUserName.Text)) || (txtUserName.Text.Length > 10))
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
</script>
<body>
<form id="Form1" runat="server">
UserName:<asp:TextBox ID="txtUserName" runat="server" />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="错误信息" ControlToValidate="txtUserName"
ClientValidationFunction="ClientValidateUserName" ValidateEmptyText="True"></asp:CustomValidator>
<asp:Button ID="btnValid1" runat="server" Text="验证用户名" />
<asp:CheckBoxList ID="cbAgeRangeList" runat="server" Height="36px" Width="400px"
RepeatDirection="Vertical">
<asp:ListItem Value="1"><16</asp:ListItem>
<asp:ListItem Value="2">16-22</asp:ListItem>
<asp:ListItem Value="3">22-30</asp:ListItem>
<asp:ListItem Value="4">30-40</asp:ListItem>
<asp:ListItem Value="5">40-50</asp:ListItem>
<asp:ListItem Value="6">50-60</asp:ListItem>
<asp:ListItem Value="6">60-80</asp:ListItem>
<asp:ListItem Value="6">>80</asp:ListItem>
</asp:CheckBoxList>
<asp:CustomValidator ID="CustomValidator2" runat="server" ErrorMessage="请正确选择年龄段"
ClientValidationFunction="CheckCheckBoxList"></asp:CustomValidator>
</form>
</body>
</html>

  

CustomValidator控件用法的更多相关文章

  1. 关于Datagridview控件用法的一些总结(设置列chicun)

    1. 关于Datagridview控件用法的一些总结:http://www.cnblogs.com/mingjiatang/p/4968049.html

  2. [Python爬虫] 之六:Selenium 常用控件用法

    Selenium 常用控件用法 1.文本框 上图中,如何定位搜索文本框,并输入搜索内容进行搜索 首先:利用方法 find_element_by_xpath定位元素:inputElements = se ...

  3. Jquery + css 日期控件用法实例.zip

    /*==============================================================================** Filename:common.j ...

  4. xtrapivotcontrol 控件用法及相关属性

    XtraPivotControl使用指南:可参照以下的文档: 转载自:http://wenku.baidu.com/view/d7886b20aaea998fcc220e53.html 上面链接中对x ...

  5. iOS UIProgressView控件用法

    IOS中进度条控件的用法总结. 进度条控件是IOS开发中一个简单的系统控件,使用总结如下: 初始化一个进度条: - (instancetype)initWithProgressViewStyle:(U ...

  6. Vc++ 控件用法总结之List Control

    1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitD ...

  7. My97DatePickerBeta 时间选择控件用法

    用法说明:只需要调用一个js<script language="javascript" type="text/javascript" src=" ...

  8. DataGridView控件用法合集

    1.当前的单元格属性取得.变更 Console.WriteLine(DataGridView1.CurrentCell.Value) Console.WriteLine(DataGridView1.C ...

  9. 关于Datagridview控件用法的一些总结

    一.引言 Datagridview控件在winform开发中还是比较常用,一般的数据库系统都会使用它,但是想要友好的展示数据,形成良好的用户界面,那么就要对c#库中默认的Datagridview设置进 ...

随机推荐

  1. jQuery对象合并、jQuery添加静态方法、jQuery添加DOM实例方法

    实例效果: 代码演示: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ...

  2. 为javascript设置默认参数值

    javascript(js)中如何为函数设置默认参数值,下面提供几种方法供参考. 第一种方法: function example(a,b){ var a = arguments[0] ? argume ...

  3. jquery如何获取元素的滚动高度

    获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 $(documen ...

  4. HTML DOM 基础知识,成为javascript晋级高手的必备手册

    一.DOM 简介,什么是 DOM? 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口. 标记语言,也称置标语言,是一种将文本( ...

  5. JQuery 之 重置表单的方法

    由于JQuery中,提交表单是如下方式: $('#formId').submit() 想当然的认为,重置表单,应该如下: $('#formId').reset(); 但是,这样表单无法重置! 经查阅资 ...

  6. MVC 之 缓存机制(二)

    八.应用程序缓存 应用程序缓存提供了一种编程方式,可通过键/值对将任意数据存储在内存中. 使用应用程序缓存与使用应用程序状态类似. 但是,与应用程序状态不同的是,应用程序缓存中的数据是易失的, 即数据 ...

  7. Audition CC2019 MME设备内部错误怎么解决!

    安装完了AA2019,没有想到像昨天安装系统那么不顺利... 当然出现问题的原因是因为我安装了win10 并且我禁用了麦克风的所有应用权限. 设置里面搜索 麦克风 权限 Ok工作啦, 好开森~     ...

  8. Linux安装nginx并设置https(openssl

    一.安装依赖包 1.$sudo apt-get install openssl    或者$sudo apt-get install libssl-dev 2.$sudo apt-get instal ...

  9. 〖Linux〗干掉Kubuntu烦人的软件升级提示“Update notification daemon”,Your should update ..

    Kubuntu是很好使用,但是升级提示也是太烦人了,开机的时候总是显示如下画面: 使用System Load Indicator(sudo apt-get install indicator-mult ...

  10. 编程填空:左边i位取反

    总时间限制: 1000ms 内存限制: 1024kB描述写出函数中缺失的部分,使得函数返回值为一个整数,该整数的左边i位是n的左边i位取反,其余位和n相同请使用[一行代码]补全bitManipulat ...