ASP.NET CustomValidator 控件的用法

  ASP.NET 验证控件具有在客户端和服务器端均进行验证的能力. 而在定义 CustomValidator 控件的时候,
许多开发者往往只写其中一端的验证代码, 这样做有比较大的弊端.

  如果用JavaScript等脚本语言只写客户端验证代码, 那么容易被人绕过验证直接提交数据.
  如果只写服务器端验证代码, 则效率比较低, 用户使用体验不好.

  所以正确的做法是两个验证代码都要写.

  方法举例如下

  假设验证一个 ID 为 PublishYear 的 TextBox 控件. 我们先写客户端代码:
    <script language="javascript" type="text/javascript">

        function checkForm(val, args) {
            if (args.Value == "") {

                args.IsValid = false;
                alert("vtimes.net提醒:请输入正确的年份");
            }                
        }
    </script>

    从工具箱拖入一个 CustomValidator, 设置其 ClientValidationFunction 为 checkForm,
    设置 ValidateEmptyText 为 true.
    在该控件的属性窗口找到事件窗口, 双击 servervalidate 后的空白, 自动产生服务器端验证函数
    代码如下:
    protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
    {
        if (PublishYear.Text.Equals(""))
        {
            //Label1.Text = "发表年份不可为空www.vitimes.net,www.historycreator.com";
            args.IsValid = false;
        }
    }
   
    最后生成的 CustomValidator 标记如下:
   
    <asp:CustomValidator ID="CustomValidator1" runat="server"
            ErrorMessage="CustomValidator" ClientValidationFunction="checkForm"
            ControlToValidate="PublishYear"
            onservervalidate="CustomValidator1_ServerValidate" ValidateEmptyText="True"></asp:CustomValidator>
运行即可.

注1,该程序运行出来需要 CustomValidator 的属性 ValidateEmptyText 设置为 true.

注2,本文试验使用 .NET Framework 版本为3.5.


文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: ASP.NET
相关日志:
评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.