У меня есть два элемента проверки, могу ли я объединить их в один?
Ниже приведены два моих оригинальных элемента управления, но они работают только для первого. Я понял, что у него может быть только один элемент проверки.
<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;
}
Спасибо.
Изменить: приложение не может достичь здесь, даже если я установил точку останова. Я удалил первый элемент управления проверки и оставил только второй.