当各种验证控件的验证类型都不能满足需要时可以使用CustomValidator验证控件,通过自定义验证函数来验证。直接看例子

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CustomValidator.aspx.cs" Inherits="WebApplication1.CustomValidator" %>

<!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 runat="server">
<title></title>
<style type ="text/css" >
.red
{
color:Red ;
}
</style> <script type ="text/javascript" >
function cvComment_ServerValidate(source, args) {
if (args.Value.Length > 10)
args.IsValid = false;
else
args.IsValid = true;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" ShowMessageBox ="true" ShowSummary ="true" />
<asp:Label runat ="server" Text ="comments:" AssociatedControlID ="txtComment"></asp:Label>
<br />
<asp:TextBox ID ="txtComment" runat ="server" Rows ="5" Columns ="30" TextMode ="MultiLine" ></asp:TextBox>
<asp:CustomValidator ID ="cvComment" runat ="server" ValidateEmptyText ="false"
ControlToValidate ="txtComment" Text ="Comments must less than 10 characters" ErrorMessage ="Comments must less than 10 characters." Display ="Dynamic" CssClass ="red"
onservervalidate="cvComment_ServerValidate"
ClientValidationFunction="cvComment_ServerValidate" ></asp:CustomValidator>
<asp:RequiredFieldValidator ID ="reqComment" runat ="server" Text ="(Required)" Display ="Dynamic" ErrorMessage ="Comments is required." CssClass ="red" ControlToValidate ="txtComment"></asp:RequiredFieldValidator>
<br />
<asp:Button ID="btnSummit" runat="server"
Text="Summit" />
<br /> </div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WebApplication1
{
public partial class CustomValidator : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } protected void cvComment_ServerValidate(object source, ServerValidateEventArgs args)
{
if (args.Value.Length > )
args.IsValid = false;
else
args.IsValid = true;
} }
}

通过在CustomValidator控件的servervalidate事件编写验证代码实现控件的服务器端验证。args.Value表示验证的表单字段的值,args.IsValid表示验证成功或者失败

ClientValidationFunction属性设置客户端验证脚本,服务器端事件处理函数和客户端脚本相同,不同的是使用的语言不一样。

ValidationSummary控件可以显示所有验证控件错误信息,ShowMessageBox表示是否弹窗,默认为false ;ShowSummary表示是否在页面中显示验证信息,比如设置了弹窗可以不在页面中再次显示错误信息可以设置ShowSummary='false'.

每个验证控件都有ErrorMessage、和Text两个属性,区别在于ErrorMessage用于在ValidationSummary显示,而Text在具体的验证控件中显示,所以一般情况下ErrorMessage要能识别有错误的表单字段,而Text字段一般要进来简短。

注意:CustomValidator有验证错误时并不像其他验证控件(如RequiredFieldValidator)一样阻止页面提交。

CustomValidator中的ControlToValidate并不是必须的,比如

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication1.WebForm1" %>

<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p>你有5秒钟回答如下问题</p>
<asp:Label ID="Label1" runat="server" Text="爱因斯坦是穿越者吗?"></asp:Label><br />
<asp:TextBox ID="txtAnswer" runat="server" Rows ="5" Columns ="30" TextMode ="MultiLine" ></asp:TextBox>
<asp:CustomValidator runat ="server" Text ="你回答太慢了!"
onservervalidate="Unnamed1_ServerValidate"></asp:CustomValidator>
<br />
<asp:Button ID="btnSummit" runat="server"
Text="Summit" />
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls; namespace WebApplication1
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
Session["startTime"] = DateTime.Now;
} protected void Unnamed1_ServerValidate(object source, ServerValidateEventArgs args)
{
DateTime startTime =(DateTime)Session["startTime"];
if (startTime.AddSeconds() > DateTime.Now)
args.IsValid = true;
else
args.IsValid = false;
}
}
}
												

C# CustomValidator的更多相关文章

  1. CustomValidator验证的使用方法

    <asp:TextBox ID="txtNum" runat="server" Width="400px" ></asp: ...

  2. [转].net自定义验证控件CustomValidator的使用

    本文转自:http://tech.cncms.com/web/aspnet/96310.html CustomValidator验证控件,可以自定义验证函数,实现其它几个验证控件不能实现的验证规则,最 ...

  3. 每日学习心得:CustomValidator验证控件验证用户输入的字符长度、Linq 多字段分组统计、ASP.NET后台弹出confirm对话框,然后点击确定,执行一段代码

    2013-9-15 1.    CustomValidator验证控件验证用户输入的字符长度 在实际的开发中通常会遇到验证用户输入的字符长度的问题,通常的情况下,可以写一个js的脚本或者函数,在ASP ...

  4. 在usercontrol中如何使用验证控件CustomValidator 中的客户端验证

    在用户控件中,为一个文本控件添加CustomValidator验证,然后设置CustomValidator 的ClientValidationFunction 属性为客户端的Validate(sour ...

  5. 验证性控件的使用--验证两个文本框至少有一个不为空CustomValidator

    转:http://blog.163.com/zhaowencong_2010/blog/static/20402815220122103155643/ 有时候我们在注册一个帐号时要求我们留下电话号码, ...

  6. CustomValidator控件用法

    虽然大部分时间一直从事asp.net的开发,对于一些常用的asp.net服务器端验证控件及它们的组合使用比较熟悉,如:CompareValidator ——比较验证控件RangeValidator — ...

  7. webform CustomValidator

    https://docs.microsoft.com/en-us/dotnet/api/system.web.ui.webcontrols.customvalidator?view=netframew ...

  8. ASP.NET验证控件CustomValidator客户端验证DropDownList、TextBox

    <asp:DropDownList ID="ddlTown" runat="server"> <asp:ListItem Value=&quo ...

  9. Js触发ASP.NET Validation控件的验证, 同时获取前台验证结果(不包括CustomValidator)

    function CallValidate(group) { if (typeof (Page_ClientValidate) == "function") { Page_Bloc ...

随机推荐

  1. 小技巧——解决Github项目clone慢的问题

    设置github的项目git命令走sock代理 git config --global http.https://github.com.proxy socks5://127.0.0.1:1086(so ...

  2. [PHP] 浅谈 Laravel Authentication 的 auth:api

    auth:api 在 Laravel 的 Routing , Middleware , API Authentication 主题中都有出现. 一. 在 Routing 部分可以知道 auth:api ...

  3. [QT] - MjpegStreamer客户端(简易版)#工程源码

    简介: 大学时期学习弄的一个小软件,可以起到示例的作用,软件的几个功能截图如正文所示,文末提供工程源码文件,感谢支持! 功能截图: [ 开发板启动 mjpg_streamer 服务器 ] [ 启动软件 ...

  4. css3写下雨效果

    css3写下雨效果<pre><div class="xiayuxiaoguo"></div></pre> <pre>.x ...

  5. [转] 下载文件旁边附的MD5/SHA256等有什么用途?

    在我们下载很多软件时,旁边会出现md5,sha1/sha256/sha512等一长串字符串,这些字符串是什么意义呢? 因为怕盗版或者怕软件被植入病毒或者插件等,要对软件的完整性做校验.步骤:先下载完软 ...

  6. 全网最详细的Windows里Git client客户端管理工具SourceTree的下载与安装(图文详解)

    不多说,直接上干货! 很多人用Git命令行不熟练,那么可以尝试使用SourceTree进行操作. 安装之前的必备    (1)Git的安装 Git学习系列之Windows上安装Git详细步骤(图文详解 ...

  7. java AES-256加解密解决方法

    看文件操作即可: 链接:https://pan.baidu.com/s/1dQ_-cZitxbG31JVmRi-trg 提取码:89p4 复制这段内容后打开百度网盘手机App,操作更方便哦

  8. NOI2019:Stay at Home

    7.16 NOI D1 从同步赛开始更起好了 先看了一圈题目,发现T1非常可做,二次函数因为对称轴在\(x < 0\)的地方所以有跟一次函数类似的单调性,搞个单调队列维护一下似乎就可以了.大力码 ...

  9. Drools7 Hello Wrold 入门详细步骤--系列01课

    一.什么叫规则引擎?规则--->写在文档上引擎--->在java代码上,引用这个文档上的规则 二.drools规则引擎有什么用?简单来说就是将多变的规则,从业务代码中剥离出来(当规则变了之 ...

  10. python入学代码

    liwenhu=100 if liwenhu>=90: print("你很棒") elif liwenhu>=80: print("你很不错") e ...