大佬教程收集整理的这篇文章主要介绍了asp.net – 使CustomValidator与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" />
在服务器端:
protected void cvMemberNum_Validate(object source,ServerValidateEventArgs args) { try { args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.value)); } catch { args.IsValid = false; } }
我的问题是:ValidationSumMary从未显示CustomValidator的消息。这个问题在几个地方被问到,但我没有看到令人满意的答案。
编辑:另一种可能是服务器验证码
args.IsValid = (!CampaignRegistration.IsMemberRegistered(args.value));
如果CampaignRegistration.IsMemberRegistered(args.value)返回false,“!”使它成真,因此使其有效。我想你应该摆脱“!”如下:
args.IsValid = CampaignRegistration.IsMemberRegistered(args.value);
更新:为了使ValidationSumMary在消息框中显示您的自定义验证器消息,您需要具有ClientValidationFunction代码。如果您只需显示摘要而不显示弹出窗口,则不需要。
<asp:CustomValidator ID="cvMemberNum" runat="server" CssClass="Validationmessage" Display="Dynamic" ControlToValidate="txtMemberNum" ValidateEmptyText="false" OnServerValidate="cvMemberNum_Validate" ClientValidationFunction = "ClientValidate" Errormessage="This membership number is already registered">*</asp:CustomValidator> //JavaScript Code. function ClientValidate(source,args) { args.IsValid = false; //you need to add validation logic here }
更多:如果您不想做ClientSide验证,请尝试此技巧来显示警报。对您的CustomValidator ServerValidate方法进行此更改:
protected void cvMemberNum_Validate(object source,ServerValidateEventArgs args) { bool isValid = true; try { isValid = (!CampaignRegistration.IsMemberRegistered(args.value)); } catch { isValid = false; } args.IsValid = isValid; if(!isValid) { if(!Page.IsClientScriptBlockRegistered("CustomValidation")) Page.RegisterClientScriptBlock("CustomValidation","<script>alert('This membership number is already registered');</script>"); } }
以上是大佬教程为你收集整理的asp.net – 使CustomValidator与ValidationSummary消息框一起工作的优雅方式全部内容,希望文章能够帮你解决asp.net – 使CustomValidator与ValidationSummary消息框一起工作的优雅方式所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。