Asp.net 使用CustomValidator控件

Asp.net 使用CustomValidator控件,asp.net,validation,Asp.net,Validation,我们知道CustomValidator控件通常会根据一些算术验证检查用户的输入 我的网络表单中有一个文本框。它的文本不是来自用户的输入,而是来自数据库 MembershipUser user = Membership.Providers["SqlMembershipProvider"].GetUser(userName); TextUserName.Text = AntiXss.HtmlEncode(user.UserName); 我的目标是使用某种验证器来检查它是否合适。如果没有,则在文本框

我们知道CustomValidator控件通常会根据一些算术验证检查用户的输入

我的网络表单中有一个文本框。它的文本不是来自用户的输入,而是来自数据库

MembershipUser user = Membership.Providers["SqlMembershipProvider"].GetUser(userName);
TextUserName.Text = AntiXss.HtmlEncode(user.UserName);
我的目标是使用某种验证器来检查它是否合适。如果没有,则在文本框中更改并再次验证。 怎么做

谢谢

更新代码:

    protected void ValidateUser()
    {
        string UserNameCreated = TextUserName.Text;
        Match match = Regex.Match(UserNameCreated, @"^[a-zA-Z0-9]{6,}$",
    RegexOptions.IgnoreCase);
    }

     <td class="style4">
            <asp:TextBox ID="TextUserName" runat="server"></asp:TextBox>
        </td><td><asp:CustomValidator ID="CustomValidatorUser" runat="server" ControlToValidate="TextUserName"
                                ErrorMessage="Minimum of 6 (six) alphanumeric characters." 
                OnServerValidate="ValidateUser" Display="Dynamic"
                                ValidateEmptyText="True" ></asp:CustomValidator></td>
受保护的void ValidateUser()
{
字符串UserNameCreated=TextUserName.Text;
Match Match=Regex.Match(用户名已创建,@“^[a-zA-Z0-9]{6,}$”,
RegexOptions.IgnoreCase);
}
您的签名错误

void ServerValidation(object source, ServerValidateEventArgs args)
{
    args.IsValid = Regex.Match(TextUserName.Text, @"^[a-zA-Z0-9]{6,}$", RegexOptions.IgnoreCase);
}

验证器的目的只是验证用户输入。您可能需要使用某种正则表达式。您应该在将输入存储到数据库之前验证输入。您可以使用此模式进行验证。但是我的案例需要我在显示文本后检查它。你还没有显示你的CustomValidator。你到底有什么问题,问题是什么?如果您将
TextUserName.Text
设置为当前用户的
UserName
并且他能够更改它,那么提供验证该输入的验证器有什么问题?程序永远无法访问验证文本框的代码。代码更新了。不,我只是为了演示而修改的。最初它与您的代码相同。但它从未到达。也许这不是用户的输入?让我澄清一下。我的意思是代码确实转到了验证程序部分,但我发现args.IsValid=false;然后,验证程序似乎不起作用。它应该显示错误消息,并卡在文本框上。但事实并非如此。@Love:看看最近一个类似问题的答案。这可能会有帮助:上面的代码是完整的还是只是一个片段?也许你有其他的验证器阻止ServerValidate执行。我有一个按钮用于提交新的更改。我必须添加验证组吗?不一定,如果不指定组,整个页面都将被验证。当您单击按钮时,页面是否回发?您可以通过
Page.Validate()
(如上面的链接所示)在按钮的单击处理程序中强制验证。