asp.net – 使CustomValidator与ValidationSummary消息框一起工作的优雅方式
发布时间:2020-05-23 15:50:52 所属栏目:asp.Net 来源:互联网
导读:我以前遇到这个问题,但从来没有解决过。我有一个表单与几个验证器和一个CustomValidator。 asp:Label ID=lblMemberNum runat=server Text=Membership #: CssClass=LabelMedium /asp:Labelasp:TextBox ID=txtMemberNum runat=server
|
我以前遇到这个问题,但从来没有解决过。我有一个表单与几个验证器和一个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中解码HTML 3
- .NET发送电子邮件的最佳方法(System.Net.Mail有问题)
- asp.net – 从HTML生成MHTML
- asp.net-mvc-3 – 在Razor/MVC3中显示数据库映像(bytes [])
- asp.net-mvc-4 – 升级到.NET 4.5和EF 5后,“启用迁移”失败
- asp.net-web-api2 – Swagger中的数据注释
- asp.net-mvc – 在ASP.NET MVC中指定只读会话
- asp.net-mvc – MVC SelectList不能正常工作
- asp.net-mvc – MVC OAUTH VS2012模板,在哪里输入redirect_
- asp.net-mvc-4 – 如何在ASP.Net MVC 4中定义特定区域的布局
推荐文章
站长推荐
- asp.net-mvc-5 – “确认密码”和“密码”不匹配
- asp.net-core-mvc – 使用RedirectToAction传递T
- asp.net – Bind()还是Eval()自动使用HtmlEncode
- asp.net-mvc – 设置焦点在文本框 – MVC3
- asp.net-mvc – ‘System.Web.Webpages.Html.Htm
- asp.net – .NET 4.0 ObjectCache的线程安全和范
- .net – DataAnnotations与IDataErrorInfo
- asp.net – File.Exists从网络共享返回false
- asp.net-mvc – ASP.NET MVC是否使用常规工具箱控
- 如何使我的ASP.NET服务器控件将嵌入式代码块作为
热点阅读
