首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义验证对象未设置为实例。

自定义验证对象未设置为实例。
EN

Stack Overflow用户
提问于 2012-10-16 19:56:00
回答 1查看 324关注 0票数 1

我刚开始验证,我尝试验证了一个简单的webform,在这里,我从EvaluateIsValid()文件夹中的BaseValidator类重写了该方法。在这个方法中,我得到的错误对象没有设置为一个对象的实例,在this.GetControlValidationValue()调用中设置字符串。

代码语言:javascript
复制
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="ValidApp.Default" %>

<!DOCTYPE html>

<script runat="server">
    protected void pageCvd_ServerValidate(object source, ServerValidateEventArgs args)
    {
        ValidApp.App_Code._Validators valid = new ValidApp.App_Code._Validators(usernameTxt.ClientID.ToString());
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div style="display:inline-block; width:200px;">
        <asp:CustomValidator ID="pageValidatorCvd" runat="server" EnableClientScript="false" OnServerValidate="pageCvd_ServerValidate"></asp:CustomValidator>       
        <asp:Label ID="usernameLbl" runat="server" Text="Username:" style="width:50px; font-size:xx-small"></asp:Label>
        <asp:TextBox ID="usernameTxt" runat="server" style="width:100px; font-size:xx-small"></asp:TextBox>
        <br />
        <asp:Label ID="passwordLbl" runat="server" Text="Password:" style="width:50px; font-size:xx-small"></asp:Label>
        <asp:TextBox ID="passwordTxt" runat="server" style="width:100px; font-size:xx-small"></asp:TextBox> 
    </div>
    <div>
        <asp:Button ID="registryBtn" runat="server" OnCommand="registryBtn_Command" CommandName="" CommandArgument="" Text="Register" style="width:50px; font-size:xx-small"/>
    </div>
    </form>
</body>
</html>

代码在中的应用

代码语言:javascript
复制
namespace ValidApp.App_Code
{
    public class _Validators : BaseValidator
    {
        private string regex;
        private string errorMessage;
        private string controlToValidate;

        protected override bool EvaluateIsValid()
        {
            string value = this.GetControlValidationValue(controlToValidate);
            return Regex.IsMatch(value, regex);
        }

        public _Validators(string controlToValidate = "", string regex = @"^[a-z0-9]{6-8}$", string errorMessage = "The Username is not valid!")
        {
            this.regex = regex;
            this.errorMessage = errorMessage;
            this.controlToValidate = controlToValidate;

            bool validation = EvaluateIsValid();            
        }
    }
}

我尝试在<%@ Register >上创建我自己的自定义验证,但是没有效果。

你知道我哪里出错了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-25 18:39:16

解决办法:

似乎您不能调用类构造函数,这样EvaluateIsValid()方法就可以自己命中并获得正确的控件!

代码语言:javascript
复制
namespace ValidApp.App_Code
{
    public class _Validators : BaseValidator
    {   
        protected override bool EvaluateIsValid()
        {
            string value = this.GetControlValidationValue(ControlToValidate);
            return Regex.IsMatch(value, @"^[a-z0-9]{6-8}$");
        }

        public _Validators()
        {

        }
    }
}

这就是它的全部!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12922483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档