CustomValidator控件用法
虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:
CompareValidator ——比较验证控件
RangeValidator ——范围验证控件
RegularExpressionValidator ——正则验证控件
RequiredFieldValidator ——必填验证控件
但是一直没去研究CustomValidator控件的用法,心中自然也有一种想法:好不容易从写js验证的痛苦中摆脱出来,如今是能不回去就不要回去了,但是有时候又会遇到一些用上面提到的验证控件没有办法做到的情况(当然是指在客户端没办法做到,我要是说在服务器端没办法做到就让大家笑掉大牙了
),用自然想它在客户端完成验证了,至少也要先在客户端验证一下,通过客户端验证再到服务器端验证,这样减少数据的往返时间,降低网络流量和保证反应及时性。
CustomValidator 是一个提供灵活验证方式的控件,它也能在客户端和服务器端验证,分别提供了两种验证的方法原型:
服务器端验证:
客户端验证(js):
无论对于客户端验证还是服务器端验证,设置通过验证的办法就是将第二个参数的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控件用法的更多相关文章
- 关于Datagridview控件用法的一些总结(设置列chicun)
1. 关于Datagridview控件用法的一些总结:http://www.cnblogs.com/mingjiatang/p/4968049.html
- [Python爬虫] 之六:Selenium 常用控件用法
Selenium 常用控件用法 1.文本框 上图中,如何定位搜索文本框,并输入搜索内容进行搜索 首先:利用方法 find_element_by_xpath定位元素:inputElements = se ...
- Jquery + css 日期控件用法实例.zip
/*==============================================================================** Filename:common.j ...
- xtrapivotcontrol 控件用法及相关属性
XtraPivotControl使用指南:可参照以下的文档: 转载自:http://wenku.baidu.com/view/d7886b20aaea998fcc220e53.html 上面链接中对x ...
- iOS UIProgressView控件用法
IOS中进度条控件的用法总结. 进度条控件是IOS开发中一个简单的系统控件,使用总结如下: 初始化一个进度条: - (instancetype)initWithProgressViewStyle:(U ...
- Vc++ 控件用法总结之List Control
1.新建对话框MFC,在对话框上放一个ListCtrl ID:IDC_PATH View:Report 2.为ListCtrl添加变量 右击->添加变量m_wndPath 3.找到OnInitD ...
- My97DatePickerBeta 时间选择控件用法
用法说明:只需要调用一个js<script language="javascript" type="text/javascript" src=" ...
- DataGridView控件用法合集
1.当前的单元格属性取得.变更 Console.WriteLine(DataGridView1.CurrentCell.Value) Console.WriteLine(DataGridView1.C ...
- 关于Datagridview控件用法的一些总结
一.引言 Datagridview控件在winform开发中还是比较常用,一般的数据库系统都会使用它,但是想要友好的展示数据,形成良好的用户界面,那么就要对c#库中默认的Datagridview设置进 ...
随机推荐
- SQL语句 怎么把从一个表中查出来数据插入到另一个表中
(1).select * into destTbl from srcTbl(2).insert into destTbl(fld1, fld2) select fld1, 5 from srcTbl
- Communication API
Stingray WIKI Stingray javascript Communication 主要的三个方法: Communication.LinkRequest - 页面跳转,调用比较简单,直接参 ...
- 透彻理解Ioc
引述:IoC(控制反转:Inverse of Control)是Spring容器的内核,AOP.声明式事务等功能在此基础上开花结果.但是IoC这个重要的概念却比较晦涩隐讳,不容易让人望文生义,这不能不 ...
- MongoDB numa系列问题一:[initandlisten] connection refused because too many open connections:
1:Mongod日志有很多这样的报错: [initandlisten] connection refused because too many open connections: 2:查看系统的限制 ...
- Qt 使用 net-snmp 包的过程记录
使用 C/C++ 进行 SNMP 开发,网上比较流行的主要是用 net-snmp 和 snmp++ .在 sourceforge 上以 Qt 和 snmp 为关键词进行搜索,搜到的项目 net-snm ...
- Cas Server源码编译现场实例
最近公司有项目需要做单点登录,根据要求就写下这篇从github上下载的包到项目编译通过,再到修改原代码实现自己的特殊逻辑. 前提: java环境 tomcat环境 maven环境 MyEclipse开 ...
- jqGrid遍历所有行及获取某一行数据
$("#gridTable").find("tbody tr").not(".jqgfirstrow").each(function (i) ...
- oracle-sakila-db sakila的Oracle版本
在Sakila——MySQL样例数据库解析 中,学习了sakila for mysql的表结构.并把它作为数据仓库.ODI ETL学习的源数据库.ODI Studio拓扑结构的创建与配置 后来发现OD ...
- DNS服务器的维护与故障排除
1. DNS故障诊断的常用工具或命令 诊断DNS解析故障的四个常用命令工具: ①unbound-checkconf:用于检查unbound服务器配置文件的语法错误 ②unbound-control:是 ...
- Linux指令范例速查手册
linux命令繁多,命令就是AK的子弹,对上口径,百发百中! 无意发现一本介绍Linux命令的手册--->[Linux指令范例速查手册] 下载: https://pan.baidu.com/s/ ...