惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 刹那间我存在

一个可以放wordpress博客的PHP国外免费空间速度非常不错 重写alert,使用模态窗口强化alert。 - 刹那间我存在 - 博客园 利用 ASP.NET 的Timer 来实现的访问统计,感觉比较适合高访问量的网站 JavaScript 使用for(…in…)实现反射机制 给moz添加ie方法和属性,让firefox像IE一样编程 - 刹那间我存在 - 博客园 [原] 用 javascript 给你的博客增加运行代码功能 [原]ASP.NET 下生成的条形码。 网页中图片大小自动调整三种方法 - 刹那间我存在 - 博客园 同时支持三种事件模型 ASP调用.Net编写的动态库 - 刹那间我存在 - 博客园 整个表单元素禁用``` shtml精简教程 更改数据库所有者 BitComet超级优化设置 很酷的TOOLTip JS函数收藏 今天得到了两个 Google Analytics 的邀请 千万数量级分页存储过程(带效果演示) 推荐一下免费的1G网络硬盘,非常另类
CustomValidator 控件
刹那间我存在 · 2006-03-17 · via 博客园 - 刹那间我存在

Posted on 2006-03-17 09:55  刹那间我存在  阅读(736)  评论()    收藏  举报

计算输入控件的值以确定它是否通过自定义的验证逻辑。

<asp:CustomValidator 
     id="ProgrammaticID" 
     ControlToValidate="programmatic ID of Server Control to Validate"
     ClientValidationFunction="ClientValidateID"
     OnServerValidate="ServerValidateID"
     ErrorMessage="Message to display in ValidationSummary control"
     Text="Message to display in control" 
     ForeColor="value" 
     BackColor="value" ... 
     runat="server" >
</asp:CustomValidator>

备注

CustomValidator 控件允许您用自定义的验证逻辑创建验证控件。例如,可以创建一个验证控件,该控件检查在文本框中输入的值是否为偶数。

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

若要创建服务器端验证函数,请为执行验证的 ServerValidate 事件提供处理程序。可使用作为参数传入事件处理程序的 ServerValidateEventArgs 对象的 value 属性访问来自要验证的输入控件的字符串。验证结果随即存储在 ServerValidateEventArgs 对象的 IsValid 属性中。

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

如果正在使用 VBScript,则该函数必须采用下面的形式:

Sub ValidationFunctionName (source, arguments)

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

Function ValidationFunctionName (source, arguments)

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

与服务器端验证类似,使用 arguments 参数的 value 属性访问要验证的值。通过设置 arguments 参数的 IsValid 属性返回验证结果。

警告:创建客户端验证函数时,请确保同时包含服务器端验证函数的功能。如果创建客户端验证函数时不存在相应的服务器端函数,则恶意代码可能会绕过验证。

多个验证控件可以同单个输入控件相关联,以验证不同的判据。例如,可将多个验证控件应用于 TextBox 控件,该控件使用户可以输入要添加到购物车中的商品数量。可以使用 CustomValidator 控件确保指定的值小于商品目录中的数量,并使用 RequiredFieldValidator 控件确保用户向 TextBox 控件输入值。

注意 如果输入控件为空,则不调用任何验证函数并且验证成功。使用 RequiredFieldValidator 控件防止用户跳过某个输入控件。

不设置 ControlToValidate 属性也可以使用 CustomValidator 控件当验证多个输入控件或验证无法与验证控件一起使用的输入控件(如 CheckBox 控件)时,通常这样做。在这种情况下,arguments 参数(该参数传递给 ServerValidate 事件的事件处理程序和客户端验证函数)的 value 属性总是包含一个空字符串 ("")。但是,仍在适当的位置调用这些验证函数,以确定服务器和客户端上的有效性。若要访问要验证的值,必须以编程方式引用要验证的输入控件,然后从适当的属性中检索该值。例如,若要在服务器上验证 CheckBox 控件,请不要设置验证控件的 ControlToValidate 属性,并且为 ServerValidate 事件的处理程序使用以下代码:

[Visual Basic]
Sub ServerValidation (source As object, args As ServerValidateEventArgs)
 
   args.IsValid = (CheckBox1.Checked = True)

End Sub
[C#]
void ServerValidation (object source, ServerValidateEventArgs args)
{
      
   args.IsValid = (CheckBox1.Checked == true);
   
}


示例

下面的示例说明如何创建 CustomValidation 控件,该控件在服务器上验证在文本框中输入的值是否为偶数。验证结果随后显示在页面上。

[Visual Basic]
<%@ Page Language="VB" %>
<html>
<head>
   <script runat="server">
      Sub ValidateBtn_onClick(sender As object, e As EventArgs) 
         If Page.IsValid Then 
            lblOutput.Text = "Page is valid."
         Else 
            lblOutput.Text = "Page is not valid!"
         End If
      End Sub
      Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)

         Dim num As Integer = Integer.Parse(arguments.value)
         arguments.IsValid = ((num mod 2) = 0)
         
      End Sub
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p>
      <asp:TextBox id="Text1" 
           runat="server" />
        
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p>
      <asp:Button id="Button1"
           Text="Validate" 
           onClick="ValidateBtn_onClick" 
           runat="server"/>
   </form>
</body>
</html>
[C#]
<%@ Page Language="C#" %>
<html>
<head>
   <script runat="server">
      void ValidateBtn_onClick(object sender, EventArgs e) 
      { 
         if (Page.IsValid) 
         {
            lblOutput.Text = "Page is valid.";
         }
         else 
         {
            lblOutput.Text = "Page is not valid!";
         }
      }
      void ServerValidation (object source, ServerValidateEventArgs arguments)
      {

         int i = int.Parse(arguments.value);
         arguments.IsValid = ((i%2) == 0);

      }
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p>
      <asp:TextBox id="Text1" 
           runat="server" />
        
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p>
      <asp:Button id="Button1"
           Text="Validate" 
           onClick="ValidateBtn_onClick" 
           runat="server"/>
   </form>
</body>
</html>
下面的示例说明如何创建 CustomValidation 控件,该控件执行的验证例程与上例相同,但此例在客户端执行。

[Visual Basic]
<%@ Page Language="VB" %>
<html>
<head>
   <script runat="server">
      Sub ValidateBtn_onClick(sender As object, e As EventArgs) 
         If Page.IsValid Then 
            lblOutput.Text = "Page is valid."
         Else 
            lblOutput.Text = "Page is not valid!"
         End If
      End Sub
      Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)

         Dim num As Integer = Integer.Parse(arguments.value)
         arguments.IsValid = ((num mod 2) = 0)
 
      End Sub
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p>
      <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-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p>
      <asp:Button id="Button1"
           Text="Validate" 
           onClick="ValidateBtn_onClick" 
           runat="server"/>
   </form>
</body>
</html>
<script language="vbscript">
   <!--
   Sub ClientValidate(source, arguments)
      If (arguments.value mod 2) = 0 Then
         arguments.IsValid=true
      Else
         arguments.IsValid=false
      End If
   End Sub
   ' -->
</script>
[C#]
<%@ Page Language="C#" %>
<html>
<head>
   <script runat="server">
      void ValidateBtn_onClick(object sender, EventArgs e) 
      { 
         if (Page.IsValid) 
         {
            lblOutput.Text = "Page is valid.";
         }
         else 
         {
            lblOutput.Text = "Page is not valid!";
         }
      }
      void ServerValidation (object source, ServerValidateEventArgs arguments)
      {
         
            int i = int.Parse(arguments.value);
            arguments.IsValid = ((i%2) == 0);

      }
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p>
      <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-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p>
      <asp:Button id="Button1"
           Text="Validate" 
           onClick="ValidateBtn_onClick" 
           runat="server"/>
   </form>
</body>
</html>
<script language="vbscript">
   Sub ClientValidate(source, arguments)
      If (arguments.value mod 2) = 0 Then
         arguments.IsValid=true
      Else
         arguments.IsValid=false
      End If
   End Sub
</script>