`
isiqi
  • 浏览: 16581470 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

ASP.NET - ASP.NET 服务器控件验证类型 - CustomValidator 类

阅读更多

使用 CustomValidator 控件为输入控件提供用户定义的验证函数。CustomValidator 控件是不同于它所验证的输入控件的另一个控件,它使您可以控制显示验证消息的位置。

验证控件总是在服务器上执行验证。它们还具有完整的客户端实现,从而使支持脚本的浏览器(如 Microsoft Internet Explorer 4.0 以及更高版本)可以在客户端上执行验证。客户端验证通过在向服务器发送用户输入前检查用户输入来增强验证过程。这使得在提交窗体前即可在客户端检测到错误,从而避免了服务器端验证所需要的信息的往返行程。

若要创建服务器端验证函数,请为执行验证的 ServerValidate 事件提供一个处理程序。可以通过使用作为参数传递到该事件处理程序的 ServerValidateEventArgs 对象的 Value 属性来访问要验证的输入控件中的字符串。然后将验证的结果存储在 ServerValidateEventArgs 对象的 IsValid 属性中。

若要创建客户端验证函数,首先要添加前面描述的服务器端验证函数。然后,将客户端验证脚本函数添加到 ASP.NET (.aspx) 页中。

如果使用的是 Visual Basic Scripting Edition (VBScript),该函数必须采用下面的形式:

Sub ValidationFunctionName(source, arguments)

如果使用的是 JScript,则该函数必须采用下面的形式:

function ValidationFunctionName(source, arguments)

source 参数是对为 CustomValidator 控件呈现的 <span> 元素的引用。因此,您可以编程的方式控制 <span> 标记,如修改 InnerHtml 属性。arguments 参数是一个具有以下两个属性的对象:Value IsValid。使用此参数可以获取控件的值,以根据自定义验证例程验证并指示该值是否有效。

使用 ClientValidationFunction 属性指定与 CustomValidator 控件关联的客户端验证脚本函数的名称。由于该脚本函数在客户端执行,因此该函数必须使用目标浏览器支持的语言(如 VBScript JScript)来编写。

说明: 当使用 UpdatePanel 控件内部的 CustomValidator 控件时,请确保该验证程序控件与关联的控件位于同一面板中。

与服务器端验证一样,可以通过使用 arguments 参数的 Value 属性来访问要验证的输入控件中的字符串。通过设置 arguments 参数的 IsValid 属性返回验证结果。

警告: 在使用验证程序控件时,应该始终首先检查服务器端验证的结果,然后再执行处理。在回发之后但调用事件方法之前,该页将调用验证程序控件并将它们的结果聚集到 Page..::.IsValid 属性中。(您还可以使用 Validate 方法显式调用验证程序控件。) 在您自己的代码中,应该先检查 Page.IsValid 属性是否返回了 true,然后再处理输入。即使支持脚本的浏览器可能在验证检查失败时禁止客户端上发生回发,您也应该总是先检查服务器代码中的 Page.IsValid,然后再处理验证的数据。

多个验证控件可以与单个输入控件一起使用来验证不同的判据。例如,可以在使用户可以输入要添加到购物车中的货物数量的 TextBox 控件上应用多个验证控件。您可以使用 CustomValidator 控件确保所指定的值小于库存的数量,并使用 RequiredFieldValidator 控件确保用户将值输入到 TextBox 控件中。

说明: 如果输入控件为空,则不会调用任何验证函数,并且验证将成功。使用 RequiredFieldValidator 控件要求用户在输入控件中输入数据。

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

void ServerValidation (object source, ServerValidateEventArgs args)

{

args.IsValid = (CheckBox1.Checked == true);

}

示例

下面的代码示例演示如何创建服务器端 CustomValidator 控件。

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html >

<head>

<title>CustomValidator ServerValidate Example</title>

<script runat="server">

void ValidateBtn_OnClick(object sender, EventArgs e)

{

// Display whether the page passed validation.

if (Page.IsValid)

{

Message.Text = "Page is valid.";

}

else

{

Message.Text = "Page is not valid!";

}

}

void ServerValidation(object source, ServerValidateEventArgs args)

{

try

{

// Test whether the value entered into the text box is even.

int i = int.Parse(args.Value);

args.IsValid = ((i%2) == 0);

}

catch(Exception ex)

{

args.IsValid = false;

}

}

</script>

</head>

<body>

<form id="form1" runat="server">

<h3>CustomValidator ServerValidate Example</h3>

<asp:Label id="Message"

Text="Enter an even number:"

Font-Names="Verdana"

Font-Size="10pt"

runat="server"

AssociatedControlID="Text1"/>

<br />

<asp:TextBox id="Text1"

runat="server" />

&nbsp;&nbsp;

<asp:CustomValidator id="CustomValidator1"

ControlToValidate="Text1"

Display="Static"

ErrorMessage="Not an even number!"

ForeColor="green"

Font-Names="verdana"

Font-Size="10pt"

OnServerValidate="ServerValidation"

runat="server"/>

<br />

<asp:Button id="Button1"

Text="Validate"

OnClick="ValidateBtn_OnClick"

runat="server"/>

</form>

</body>

</html>

下面的代码示例演示如何创建客户端 CustomValidator 控件。

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

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

void ValidateBtn_OnClick(object sender, EventArgs e)

{

// Display whether the page passed validation.

if (Page.IsValid)

{

Message.Text = "Page is valid.";

}

else

{

Message.Text = "Page is not valid!";

}

}

void ServerValidation(object source, ServerValidateEventArgs args)

{

try

{

// Test whether the value entered into the text box is even.

int i = int.Parse(args.Value);

args.IsValid = ((i % 2) == 0);

}

catch (Exception ex)

{

args.IsValid = false;

}

}

</script>

<html >

<head runat="server">

<title>CustomValidator Example</title>

</head>

<body>

<form id="form1" runat="server">

<div>

<asp:Label id="Message"

Text="Enter an even number:"

Font-Size="10pt"

runat="server"

AssociatedControlID="Text1"/>

<br />

<asp:TextBox id="Text1"

runat="server" />

&nbsp;&nbsp;

<asp:CustomValidator id="CustomValidator1"

ControlToValidate="Text1"

ClientValidationFunction="ClientValidate"

OnServerValidate="ServerValidation"

Display="Static"

ErrorMessage="Not an even number!"

ForeColor="green"

Font-Size="10pt"

runat="server"/>

<br />

<asp:Button id="Button1"

Text="Validate"

OnClick="ValidateBtn_OnClick"

runat="server"/>

</div>

</form>

</body>

</html>

<script type="text/javascript">

function ClientValidate(source, clientside_arguments)

{

if (clientside_arguments.Value % 2 == 0 )

{

clientside_arguments.IsValid=true;

}

else {clientside_arguments.IsValid=false};

}

</script>

分享到:
评论

相关推荐

    ASP.NET-高级WEB服务器控件

    ASP.NET中的高级Web服务器控件是一组强大的工具,旨在帮助开发者构建交互性强、功能丰富的Web应用程序。这些控件包括日历控件、广告控件和验证控件,它们各自具有独特的优势和用法。 日历控件允许用户以可视化的...

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

    ASP.NET 服务器控件中的验证控件是构建Web应用程序中不可或缺的一部分,它们主要负责检查用户输入的数据是否符合预设的规则,从而确保数据的完整性和安全性。这些控件简化了开发过程,避免了手动编写复杂的客户端和...

    asp.net 视频--验证控件使用.rar

    验证控件是ASP.NET Web Forms中非常关键的一部分,它们帮助开发者在客户端或服务器端验证用户输入。客户端验证在用户的浏览器中执行,减少了服务器的负载,而服务器端验证则提供额外的安全层,确保即使客户端验证被...

    Asp.net 验证码控件

    在本篇文章中,我们将深入探讨Asp.net验证码控件的工作原理、类型以及如何在实际项目中应用。 **1. Asp.net验证码控件的原理** 验证码控件的主要目的是创建一个动态生成的、一次性使用的图像,其中包含随机的字母或...

    商业编程-源码-asp.net验证控件气泡提示控件及Demo源码.zip

    在这个“商业编程-源码-asp.net验证控件气泡提示控件及Demo源码.zip”压缩包中,包含的是关于ASP.NET验证控件的实现以及一个气泡提示功能的示例代码。 验证控件是ASP.NET Web表单中非常重要的组成部分,它们主要...

    ASP.NET控件 和 验证控件

    **验证控件**是ASP.NET中用于确保用户输入数据有效性的工具,常见的有`RequiredFieldValidator`(验证字段非空)、`CompareValidator`(比较输入值与特定值或表达式)、`RangeValidator`(验证数值或日期范围)、`...

    Asp.Net验证控件应用--用户注册页面

    1、本程序使用基于Asp.Net的6种Asp验证控件; 2、验证控件十分方便,可以帮助我们很好解决提示用户输入的作用,达到一种很好的用户体验效果。 3、本程序,采用了非空验证(RequireValidator)、范围验证...

    asp.net C# 验证控件

    在ASP.NET框架中,C#语言是主要的编程语言,它提供了丰富的验证控件来帮助开发者轻松实现客户端和服务器端的数据验证。这些控件能够减少服务器的负载,提高应用程序的响应速度,同时提供良好的用户体验。 1. **验证...

    asp.net控件验证

    除了上述两种,ASP.NET还提供了其他类型的验证控件,如`CompareValidator`(用于比较两个字段的值)、`RangeValidator`(用于检查数值是否在指定范围内)和`CustomValidator`(允许自定义验证逻辑)。这些控件共同...

    【ASP.NET编程知识】asp.net基础学习之控件的使用方法.docx

    服务器控件是ASP.NET服务器控件,是服务器端ASP.NET网页上的对象,当用户通过浏览器请求ASP.NET网页时,这些控件将在服务器上运行,并向客户端呈现HTML标记。在ASP.NET页面上,服务器控件表现为一个标记,例如 `&lt;asp...

    ASP.NET AJAX控件验证用户注册是否重复

    我们可以利用AJAX的ScriptManager控件加载ASP.NET AJAX库,然后在CustomValidator的ClientValidationFunction属性中定义一个JavaScript函数,该函数使用XMLHttpRequest对象向服务器发送异步请求,验证用户名。...

    ASP.NET公有六种验证控件

    在ASP.NET中,验证控件是不可或缺的一部分,它们帮助确保用户输入的数据符合预设的规则,从而提高数据质量和应用安全性。本文将详细介绍ASP.NET的六种验证控件。 1. **RequiredFieldValidator(必须字段验证)** ...

    ASP.NET Web表单验证控件

    ASP.NET Web表单验证控件是.NET框架中用于确保用户在Web表单中输入的数据有效性和正确性的工具。在Web开发中,验证用户输入至关重要,因为这有助于防止错误数据的提交,提高数据质量,同时也能提供更好的用户体验,...

    asp.net验证控件 ppt讲解

    ASP.NET验证控件是开发Web应用程序时用于确保用户输入数据有效性和准确性的工具。这些控件简化了数据验证过程,可以在客户端(用户浏览器)或服务器端执行,提供了一种跨浏览器兼容的方式,使得验证功能独立于用户的...

    asp.net验证控件详解

    ASP.NET验证控件是开发Web应用程序时不可或缺的工具,它们为用户提供输入数据的实时检查,确保数据的质量和安全性。在ASP.NET中,有六种主要的内置验证控件,每一种都有其特定的用途和优势。这篇详尽的指南将深入...

    ASP.NET 视频如何使用验证控件

    **验证控件类型**:ASP.NET提供多种内置的验证控件,如RequiredFieldValidator(必填字段验证)、CompareValidator(比较验证)、RangeValidator(范围验证)、RegularExpressionValidator(正则表达式验证)、...

    ASP.NET使用验证控件创建注册窗体

    在ASP.NET中,验证控件是开发过程中不可或缺的一部分,它们主要用于确保用户输入的数据符合预设的规则,如非空检查、长度限制、格式验证等。在创建用户注册窗体时,正确使用验证控件可以提高用户体验,减少服务器端...

    ASP.NET的验证控件使用详解

    ASP.NET的验证控件是微软在ASP.NET框架中提供的强大工具,主要用于确保用户在Web表单中的输入符合预设的规则和条件。这些控件极大地简化了数据验证过程,允许开发者选择在客户端或服务器端执行验证,从而减轻服务器...

    ASP.NET验证控件讲解

    ASP.NET验证控件默认同时进行客户端和服务器端验证。客户端验证在浏览器中执行,提供即时反馈,提高用户体验;服务器端验证是必要的,以防客户端验证被绕过。可以通过设置EnableClientScript属性来选择仅执行客户端...

    asp.net控件命名规则.

    3. **验证控件**:对于验证控件,前缀通常结合验证类型,如: - `CompareValidator` 可用 `valc` 前缀(如 `valcValidAge`) - `CustomValidator` 可用 `valx` 前缀(如 `valxDBCheck`) - `RangeValidator` 可用...

Global site tag (gtag.js) - Google Analytics