使用验证控件可以向服务器提交表单数据时验证表单内容,下面以RequiredFieldValidator和CompareValidator为例说明验证控件的用法

RequiredFieldValidator用来检查必填字段CompareValidator控件可以用来检查数据类型或者比较大小。

  1. <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ValidationControl.aspx.cs" Inherits="WebApplication1.ValidationControl" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4.  
  5. <html xmlns="http://www.w3.org/1999/xhtml">
  6. <head runat="server">
  7. <title></title>
  8. <style type ="text/css" >
  9. .red
  10. {
  11. color:Red ;
  12. }
  13. </style>
  14. </head>
  15. <body>
  16. <form id="form1" runat="server">
  17. <div>
  18. <fieldset >
  19.  
  20. <legend title ="123">Product Order Form </legend>
  21. <asp:Label ID ="lblProductName" runat ="server" Text =" Product Name:" AssociatedControlID ="txtProductName"></asp:Label>
  22. <br />
  23. <asp:TextBox ID ="txtProductName" runat ="server" ></asp:TextBox>
  24. <asp:RequiredFieldValidator ID ="reqProductName" ControlToValidate="txtProductName" runat ="server" Text ="(Require)" CssClass ="red " SetFocusOnError ="true" ></asp:RequiredFieldValidator>
  25.  
  26. <br />
  27.  
  28. <asp:Label ID ="lblPrice" runat ="server" Text ="Price:" AssociatedControlID ="txtPrice" ></asp:Label>
  29. <asp:TextBox ID ="txtPrice" runat ="server" ></asp:TextBox>
  30. <asp:RequiredFieldValidator ID ="reqPrice" runat ="server" ControlToValidate="txtPrice" Text ="(Require)" CssClass ="red " SetFocusOnError ="true" ></asp:RequiredFieldValidator>
  31. <asp:CompareValidator ID ="comPrice" runat ="server" ControlToValidate ="txtPrice" Operator ="DataTypeCheck" Text ="Invalid Value" Type ="Currency" CssClass ="red " SetFocusOnError ="true" ></asp:CompareValidator>
  32.  
  33. <br />
  34. <asp:Label ID ="lblQty" runat ="server" Text ="Qty:" AssociatedControlID ="txtQty"></asp:Label>
  35. <asp:TextBox ID ="txtQty" runat ="server" ></asp:TextBox>
  36. <asp:CompareValidator ID ="comQty" runat ="server" ControlToValidate="txtQty" Text ="Invalid Value" CssClass ="red " Display ="Dynamic" Operator ="DataTypeCheck" Type ="Integer" SetFocusOnError ="true" ></asp:CompareValidator>
  37. <br />
  38.  
  39. <asp:Button ID ="txtSummit" runat ="server" Text ="提交" onclick="txtSummit_Click" />
  40. </fieldset>
  41.  
  42. <asp:Label ID ="lblResult" runat ="server" ></asp:Label>
  43. </div>
  44. </form>
  45. </body>
  46. </html>
  1. public partial class ValidationControl : System.Web.UI.Page
  2. {
  3. protected void Page_Load(object sender, EventArgs e)
  4. {
  5.  
  6. }
  7.  
  8. protected void txtSummit_Click(object sender, EventArgs e)
  9. {
  10. if (Page.IsValid)
  11. {
  12. lblResult.Text = "Product Name:" + txtProductName.Text + "<br/>" +
  13. "Price:" + txtPrice.Text + "<br/>" +
  14. "Qty:" + txtQty.Text;
  15. }
  16. }
  17. }

例子说明:

1.验证控件ControlToValidate属性用于指定需要验证的控件;

2.验证控件的Text属性用于验证错误时显示错误信息,一般Text属性只是简单的文字,但是Text属性也支持html,比如<img src="error.gif" ali=""/>用一个图片代替简单的文字;

3.如果要验证信息显示红色,或者别的特殊样式,可以使用CssClass指定样式;

4.验证控件的 Display属性,Display属性有Dynamic、Static、None三个值,默认Static,

Display为Static时生成的错误信息如下

<span id="reqPrice" class="red " style="visibility: visible;">(Require)</span>

Display为Dynamic生成的错误信息为

<span id="reqPrice" class="red " style="display: none;">(Require)</span>

两者的区别是visibility: visible虽然隐藏了,但还是占据窗口空间,display: none不占窗口空间,我们应该设置Display为Dynamic这样验证信息后面的控件就不会被推倒右边

None 生成的标签如下,错误信息为空,所以不能用来显示错误提示

<span id="reqPrice" class="red " style="display: none;"></span>

5.验证控件默认在客户端和服务器端都进行验证,一些低端的浏览器不支持JavaScript,所以在服务器端进行验证能保证数据的有效性。可以使用EnableClientScript ="false"禁用客户端验证。

6.在带有验证控件的页面提交数据时需要检查 Page.IsValid属性,因为假如客户端验证不生效,服务器端虽然会进行验证,但是并不会阻止数据提交,只是简单的显示错误信息,如

  1. protected void txtSummit_Click(object sender, EventArgs e)
  2. {
  3. if (Page.IsValid)
  4. {
  5. lblResult.Text = "Product Name:" + txtProductName.Text + "<br/>" +
  6. "Price:" + txtPrice.Text + "<br/>" +
  7. "Qty:" + txtQty.Text;
  8. }
  9. }

7.使用SetFocusOnError ="true"来让控件验证不通过时获取焦点,如果有几个验证控件同时设置,第一个控件或者焦点,因为同一个时间只能有一个控件获得焦点。

8.可以使用Page.Validators访问所有的验证控件,或者设置特殊样式。

  1. Page_PreRender事件发生在所有控件事件之后,Page_load事件发生在所有控件事件之前
  1. protected void Page_PreRender(object sender, EventArgs e)
  2. {
  3. foreach (BaseValidator c in Page.Validators)
  4. {
  5. if (c.IsValid)
  6. c.BackColor = System.Drawing.Color.Yellow;
  7. else
  8. c.BackColor = System.Drawing.Color.White;
  9. }
  10. }

C# 验证控件的使用RequiredFieldValidator&CompareValidator的更多相关文章

  1. ASP.NET验证控件

    在此过程中房间的收费制度时,.为了验证文本框是否为空.用户存在.合法等等.我们都要单独写代码.学习了ASP.NET的验证控件,省了非常多事. ASP.NET能够轻松实现对用户输入的验证. 让我们好好回 ...

  2. ASP.Net 验证控件 RequiredFieldValidator

    使用 ASP.NET 验证控件可在网页上检查用户输入.有用于各种不同类型验证的控件,例如范围检查或模式匹配验证控件.每个验证控件都引用网页上其他位置的输入控件(服务器控件).当处理用户输入时(例如,当 ...

  3. RequiredFieldValidator控件--必填验证控件

    RequiredFieldValidator控件: ·RequiredFieldValidator控件也被称之为必填验证控件,顾名思义,也就是与RequiredFieldValidator控件关联的控 ...

  4. webForm中的验证控件

    1.非空验证控件:RequireFieldValidator  :2.数据比较验证:CompareValidator :3.数据范围验证:RangeValidator :4.正则表达式验证:Regul ...

  5. asp.net中验证控件的使用方法

    用于检查是否有输入值 :RequiredFieldValidator(必须字段验证) 按设定比较两个输入 :CompareValidator(比较验证) 输入是否在指定范围 :RangeValidat ...

  6. ASP.NET开发中主要的字符验证方法-JS验证、正则表达式、验证控件、后台验证

    ASP.NET开发中主要的字符验证方法-JS验证.正则表达式.验证控件.后台验证 2012年03月19日 星期一 下午 8:53 在ASP.NET开发中主要的验证方法收藏 <1>使用JS验 ...

  7. ASP.NET数据验证控件的常用的属性

    一.非空验证     RequiredFieldValidator ControlToValidate 所验证的控件ID Text 出错时的提示的文本 ErrorMessage 提交给Validati ...

  8. 016. asp.net的验证控件

    RequiredFileldValidator: 检查某个字段是否输入; 空值检查 主要属性: ControlToValidate:要验证的控件 ErrorMessage:错误提示信息 Compare ...

  9. ASP.NET验证控件二

    RequiredFieldValidator 验证控件 页面布局: <div> <h1>RequiredFieldValidator 验证控件</h1>   用户名 ...

随机推荐

  1. Vue父子组件相互传值及调用方法的方案

    Vue父子组件相互传值及调用方法的方案 一.调用方法: 1.父组件调用子组件方法: 2.子组件调用父组件方法: 参考:https://www.cnblogs.com/jin-zhe/p/9523782 ...

  2. 验证Prometheus alertmanager邮件发送

    新环境上配置alertmanager时出现了“Client was not authenticated to send anonymous mail during MAIL FROM”错误,但老环境上 ...

  3. graph处理工具

    仅作为记录笔记,完善中...................... 1       PyGSP https://pygsp.readthedocs.io/en/stable/index.html ht ...

  4. Versioning information could not be retrieved from the NuGet package repository. Please try again later.

    Versioning information could not be retrieved from the NuGet package repository. Please try again la ...

  5. 手撕面试官系列(十一):BAT面试必备之常问85题

    JVM专题 (面试题+答案领取方式见侧边栏)  Java 类加载过程? 描述一下 JVM 加载 Class 文件的原理机制? Java 内存分配. GC 是什么? 为什么要有 GC? 简述 Java ...

  6. 【LEETCODE】62、数组分类,hard级别,题目:42、128

    package y2019.Algorithm.array.medium; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.a ...

  7. Jenkins版本迭代以及回滚

    一.摘要 在上一篇文章,链接如下: https://www.cnblogs.com/xiao987334176/p/11434849.html 镜像打的是latest版,如果需要回滚的话,就比较麻烦了 ...

  8. SPOJ Qtree系列

    Qtree1 将边权变为这条边连接的两个点中深度更深的点的点权,这样就可以变为带修改链上最大点权.直接树链剖分即可. 下面是一份C语言代码 #include<stdio.h> #inclu ...

  9. Java11新特性 - 标准Java异步HTTP客户端

    Java9开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到这个 AP ...

  10. VMware 网络介绍

       3.1 网卡介绍 如图所示,你的机器有两块网卡,一个是有线,一个是无线. 装完VM之后,会出现两块虚拟网卡,如图 VM有四种连接方式,我们着重介绍前三种    3.2 桥接 选择桥接模式,说明V ...