• 11 验证控件1


    在前面的一个实例中,我们在注册或登录时都会检查输入是否正确,是不为空等,并且客户和服务端都要检查。

    在ASP.net中已提供了验证控件,它会在服务端和客户端进行检查。

    如:对用户输入的数据进行合法性校验,这些检验逻辑很多是重复的,比如字段不能为空,必须是日期格式、数字不能大于指定的值等,而且要同时在客户端和服务端校验,客户端校验提高可用性,服务端校验防止恶意攻击。asp.net验证控件就是为了简化这些问题而提供的。

    Asp.net提供了如下的控件:

    •   RequiredFieldValidator:字段必填,不能为空。
    •   RangeValidator :值在给定的最大值、最小值之间。
    •   CompareValidator: 用于比较两个值的关系是否满足要求或者是否是指定类型的数据;
    •   RegularExpressionValidator:检验数据满足的正则表达式。
    •   CustomValidator:自定义验证。
    • 如果在一个页面中同时放置注册和登录表单,那么他们的验证就会同时进行,这样即使登录,也会验证注册的东西,我们可以使用验证组来解决这个问题,将同一组的控件(表单、提交按钮、Validator等)的ValidationGroup设为相同的值就可以了,这样的话当点击button提交表单时就只会验证和它ValidationGroup相同名字的控件。
    • 如果将按钮控件(button,imagebutton,linkbutton)的CausesValidation属性设置为false,则这个按钮的点击不触发校验。  比如:在登录页面中有个连接按钮是注册用的,当点击“注册”按钮时并不许去验证用户名等信息,所以只要设置“注册”按钮的CausesValidation属性为false就可以了。

        1. RequiredFieldValidator

            ControlToValidate:设定要验证的控件; Text属性为当初验证的控件属性为空的时候显示的错误信息,Text不仅可写普通文件,也可写任何内容。ErrorMessage主要是显示于ValidationSummary中的,如果Text为空,则会在所连接的控件旁边显示ErrorMessage的内容。

           有时候控件中的一个值为默认值,比如在下拉列表中有个性别选择项,系统默认显示“--请选择性别--”,如果用户名不选择系统要给出提示,你只要把“--请选择性别--”填入此验证控件的InitialValue属性中就可以了,它会把这个值当成空值。

       实例:

          我们在一个表单中放两个panel,分别为登录功能和注册功功能,当注册时就不要验证登录控件,当登录时就不验证注册控件。

         

    1). 为了防止登录和注册两个功能相互验证,我们设置登录中的两个text,两个验证控件及登录按钮的ValidationGroup为"login",而"注册"中的那些为"reg".

    2).在登录处的用户名“请输入名称”默认为空,就需要在它的验证控件的属性:InitialValue填上"请输入名称".

    3).“连接百度”为linkbutton,为了防止它激活表单的验证功能,就设置它的CausesValidation为false即可。

    4).分别设置它们的ControlToValidate为要验证的控件,设置它们的ErrorMessage。

    5). page有个IsValid属性,它是用来确认服务端是否验证通过,如果有就为true,不能过就不false. 在开发中会经常忘记它的确认,如果不用它,当客户端校验被禁用时,就会在后台直接运行,也只有isValid为true,服务端才会最终验证。

    以下为cs的源码:

        protected void btnLogin_Click(object sender, EventArgs e)
            {
                if (!IsValid)
                    return;
                lblLoginmsg.Visible = true;
                lblLoginmsg.Text = "登录成功";
            }
    
            protected void btnReg_Click(object sender, EventArgs e)
            {
                if (!IsValid)
                    return;
                lblRegmsg.Visible = true;
                lblRegmsg.Text = "注册成功";
            }
    
            protected void lkbtn_Click(object sender, EventArgs e)
            {
                Response.Redirect("http://www.baidu.com");
            }
  • 相关阅读:
    CMD窗口正确显示UTF-8字符
    《剑指offer》 链表中倒数第k个节点
    《剑指offer》 调整数组顺序使得奇数在偶数前面
    《剑指offer》 大数递增
    《剑指offer》 数值的整数次方
    《剑指offer》 二进制中1的个数
    《剑指offer》 跳台阶
    《剑指offer》斐波那契数列
    《剑指offer》旋转数组中的最小数字
    刷《剑指offer》笔记
  • 原文地址:https://www.cnblogs.com/yagzh2000/p/3129490.html
Copyright © 2020-2023  润新知