Объедините два элемента проверки в один - PullRequest
1 голос
/ 14 февраля 2012

У меня есть два элемента проверки, могу ли я объединить их в один? Ниже приведены два моих оригинальных элемента управления, но они работают только для первого. Я понял, что у него может быть только один элемент проверки.

<asp:TextBox runat="server" ID="UserName" />
                            <asp:RegularExpressionValidator ID="RegularExpressionValidator1" ValidationExpression="^[a-zA-Z0-9]{6,}$"
                                runat="server" ErrorMessage="Error, please reselect it" ControlToValidate="UserName">
                                </asp:RegularExpressionValidator>
                                <asp:CustomValidator
                                    ID="CustomValidator1" runat="server" 
                                ErrorMessage="Please select another name." ControlToValidate="UserName" OnServerValidate="ValidateUser"></asp:CustomValidator>

И проверка в коде позади:

 protected void ValidateUser(object source, ServerValidateEventArgs args)
    {
        // check if the username created exists in AD already. 
        TextBox UserNameTextBox =
        (TextBox)CreateUserWizardStep2.ContentTemplateContainer.FindControl("UserName");
        string UserNameCreated = UserNameTextBox.Text;
        DirectoryEntry entry = new DirectoryEntry("LDAP://cfs");
        entry.AuthenticationType = AuthenticationTypes.Secure;

        DirectorySearcher deSearch = new DirectorySearcher(entry);
        deSearch.Filter = "(&(objectClass=user)(cn=" + UserNameCreated + "))";

        SearchResultCollection results = deSearch.FindAll();
        Match match = Regex.Match(args.Value, @"^[a-zA-Z0-9]{6,}$",
    RegexOptions.IgnoreCase);

        if (results.Count > 0)
            args.IsValid = false;
        else if (match.Success)
            args.IsValid = true;
        else
            args.IsValid = false;
    }

Спасибо. Изменить: приложение не может достичь здесь, даже если я установил точку останова. Я удалил первый элемент управления проверки и оставил только второй.

1 Ответ

1 голос
/ 14 февраля 2012

Попробуйте следующее: пользовательский валидатор выполняет всю работу, как описано выше, а также валидатор регулярных выражений. Это всего лишь один из способов, если вы хотите выполнить всю свою работу как один элемент:

Код ASPX:

<asp:TextBox runat="server" ID="UserName" />                            
<asp:CustomValidator ID="CustomValidator1" runat="server" 
ControlToValidate="UserName" OnServerValidate="ValidateUser"></asp:CustomValidator>

ASPX.CS Код: (код позади)

protected void ValidateUser(object source, ServerValidateEventArgs args)
        {
            Regex regx = new Regex("^[a-zA-Z0-9]{6,}$");
            if (regx.IsMatch(UserName.Text) == false)
            {
                CustomValidator1.ErrorMessage = "Error, please reselect it";
                args.IsValid = false;
            }
            else
            {
                // check if the username created exists in AD already.
                TextBox UserNameTextBox =
                (TextBox)CreateUserWizardStep2.ContentTemplateContainer.FindControl("UserName");
                string UserNameCreated = UserNameTextBox.Text;
                DirectoryEntry entry = new DirectoryEntry("LDAP://cfs");
                entry.AuthenticationType = AuthenticationTypes.Secure;

                DirectorySearcher deSearch = new DirectorySearcher(entry);
                deSearch.Filter = "(&(objectClass=user)(cn=" + UserNameCreated + "))";

                SearchResultCollection results = deSearch.FindAll();
                if (results.Count > 0)
                {
                    CustomValidator1.ErrorMessage = "Please select another name.";
                    args.IsValid = false;
                }
                else
                {
                    args.IsValid = true;
                }
            }
        }

Это что-то быстрое, о чем я мог подумать. Дайте мне знать, как вы идете и что вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...