asp.net – 使CustomValidator与ValidationSummary消息框一起工
发布时间:2020-12-16 00:40:28 所属栏目:asp.Net 来源:网络整理
导读:我以前遇到这个问题,但从来没有解决过。我有一个表单与几个验证器和一个CustomValidator。 asp:Label ID="lblMemberNum" runat="server" Text="Membership #:" CssClass="LabelMedium" /asp:Labelasp:TextBox ID="txtMemberNum" runat="server" CssClass="T
我以前遇到这个问题,但从来没有解决过。我有一个表单与几个验证器和一个CustomValidator。
<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-Zd]+)$" >*</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的消息。这个问题在几个地方被问到,但我没有看到令人满意的答案。 解决方法
尝试在所有验证器和ValidationSummary之间使用ValidationGroup属性。
编辑:另一种可能是服务器验证码 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-mvc – !ClrStack -a调用ASP.NET MVC应用程序显示
- asp.net-mvc – MVC路由错误:约束条目’长度’
- ASP与PHP的编译
- asp.net – Page_ClientValidate()与多个ValidationGroups
- asp.net – 在SQL Server中将日期转换为刻度
- asp.net – 从下拉列表中选择OBJECT的问题
- asp.net-mvc – 在asp.net mvc请求中捕获windows用户名
- asp.net – 如何在Repeater中查找控件
- 为什么我的asp.net应用程序抛出ThreadAbortException?
- asp.net-mvc – 构建视图模型的最佳方法是什么?
推荐文章
站长推荐
- asp.net-mvc – 如何将可视化设计器集成到开发过
- ASP.NET jQuery AutoComplete – 首次搜索后文本
- ASP.NET MVC 3中DropDownListFor的不显眼验证问题
- asp.net – 多租户应用程序的输出缓存,因主机名和
- asp.net-mvc-3 – MVC视图的命名空间问题 – Raz
- asp.net – AJAX和FormsAuthentication,如何防止
- ASP.Net vs MVC vs WebAPI和UseTaskFriendlySync
- Asp.net mvc 知多少(六)
- 为什么我的ASP.Net站点在IIS7下运行需要很长时间
- ASP.NET MVC – 根据最后的帖子排序论坛帖子
热点阅读