没有找到合适的产品?
联系客服协助选型:023-68661681
提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|其它|编辑:郝浩|2009-12-18 11:27:28.000|阅读 1032 次
概述:使用 CustomValidator 控件为输入控件提供用户定义的验证函数。CustomValidator 控件是不同于它所验证的输入控件的另一个控件,它使您可以控制显示验证消息的位置。
# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>
使用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 控件呈现的 元素的引用。因此,您可以编程的方式控制 标记,如修改 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" />
<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" />
<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>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com
文章转载自:网络转载接DevExpress原厂商通知,将于近日上调旗下产品授权价格,现在下单客户可享受优惠报价!
面对“数字中国”建设和中国制造2025战略实施的机遇期,中车信息公司紧跟时代的步伐,以“集约化、专业化、标准化、精益化、一体化、平台化”为工作目标,大力推进信息服务、工业软件等核心产品及业务的发展。在慧都3D解决方案的实施下,清软英泰建成了多模型来源的综合轻量化显示平台、实现文件不失真的百倍压缩比、针对模型中的大模型文件,在展示平台上进行流畅展示,提升工作效率,优化了使用体验。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
本站的模型资源均免费下载,登录后即可下载。模型仅供学习交流,勿做商业用途。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@evget.com
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
慧都科技 版权所有 Copyright 2003-
2025 渝ICP备12000582号-13 渝公网安备
50010702500608号