Tôi đã gặp phải vấn đề này trước đây nhưng chưa bao giờ giải quyết được nó. Tôi có một biểu mẫu với một vài trình xác nhận hợp lệ và cũng là một CustomValidator.Cách thanh lịch để làm cho CustomValidator hoạt động với hộp thoại ValidationSummary
<asp:Label ID="lblMemberNum" runat="server" Text="Membership #:" CssClass="LabelMedium" ></asp:Label>
<asp:TextBox ID="txtMemberNum" runat="server" CssClass="TextBox" ></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvMemberNum" SetFocusOnError="True" runat="server"
ControlToValidate="txtMemberNum" ErrorMessage="[ Membership # ] is required"
CssClass="ValidationMessage" Display="Dynamic" >*</asp:RequiredFieldValidator>
<asp:RegularExpressionValidator ID="revMemberNum" Display="Dynamic" runat="server"
ControlToValidate="txtMemberNum" CssClass="ValidationMessage"
ErrorMessage="[ Membership # ] can only contain letters"
ValidationExpression="^([a-zA-Z\d]+)$" >*</asp:RegularExpressionValidator>
<asp:CustomValidator ID="cvMemberNum" runat="server"
CssClass="ValidationMessage" Display="Dynamic"
ControlToValidate="txtMemberNum" ValidateEmptyText="false"
OnServerValidate="cvMemberNum_Validate"
ErrorMessage="This membership number is already registered">*</asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server"
CssClass="ValidationMessage"
ShowMessageBox="True" ShowSummary="False" />
và ở phía máy chủ:
protected void cvMemberNum_Validate(object source, ServerValidateEventArgs args)
{
try
{
args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.Value));
}
catch
{
args.IsValid = false;
}
}
Vấn đề của tôi là: ValidationSummary không bao giờ hiển thị thông báo từ CustomValidator. Câu hỏi này đã được hỏi ở nhiều nơi, nhưng tôi đã không thấy câu trả lời thỏa đáng.
Tôi khá chắc chắn đó không phải là vấn đề. Tuy nhiên, tôi sẽ cố gắng và báo cáo lại. –
Tôi đã cập nhật bài đăng của mình sau khi quan sát. Vui lòng xác nhận. –
Mã bạn đánh dấu thực sự là ok. Xác thực không thành công nếu người dùng đã đăng ký. Phần đó hoạt động. Điều gì xảy ra là, '*' xuất hiện bên cạnh hộp văn bản, nhưng ValidationSummary không hiển thị một hộp thông báo. –