微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 多个验证组,仅在控件模糊上验证一个

摘要

我有一个控件,有两个(几乎)相同的验证器,每个验证器链接到两个验证组.当光标离开控件时,ASP.NET会自动检查两个验证器.有没有办法只触发一个(没有设置EnableClientScript =“false”)所以模糊上没有显示两个*符号?

细节

我有一个带有两个按钮asp的表单:btnSave和asp:btnSubmit ……两个按钮都需要验证,因为某些控件必须在保存时验证才能正常工作.

所以我有两个验证组,用于提交的“认”组(即未设置ValidationGroup属性)和用于保存的“SaveGroup”.有两个asp:ValidationSummary控件来反映这些.

在(例如)设计为接受十进制值的单个控件上,我有以下内容.首先是提交的必填字段,然后是提交的范围验证器.然后是第三个验证器,它是范围验证器的复制但是“SaveGroup”的一部分……

<asp:TextBox runat="server" id="txtMyDecVal" />
<asp:requiredFieldValidator runat="server" ControlTovalidate="txtMyDecVal" 
   Text="*" ErrorMessage="Enter a value" />
<asp:RangeValidator runat="server" ControlTovalidate="txtMyDecVal" Type="Double"
   MinimumValue="0" MaximumValue="999.99" Text="*"
   ErrorMessage="Value must be between 0 and 999.99" />
<asp:RangeValidator runat="server" ControlTovalidate="txtMyDecVal" Type="Double"
   MinimumValue="0" MaximumValue="999.99" Text="*"
   ErrorMessage="Value must be between 0 and 999.99"
   ValidationGroup="SaveGroup" />

这工作正常,两个按钮正确验证.

问题是……有一个视觉问题,如果你在控件中键入无效文本,当光标离开控件时,ASP.NET会自动触发RangeValidators,导致出现两个*符号.

有没有办法使它只有一个验证器被检查作为控件上的模糊事件的一部分?

我可以在其中一个验证器上设置EnableClientScript =“false”,但我仍然希望它在没有回发的情况下检查客户端的控件.

更新

我一直在玩设置EnableClientScript =“false”,因为我认为保存上的回发实际上并不是一个大问题.

但是,这会导致另一个视觉问题:输入无效文本,“提交”验证器显示*.单击保存,后退,然后显示“保存”验证器的*.如果您随后将文本更改为有效文本,则“保存”验证器不会消失,因此看起来仍然存在问题…如果您将文本更改为其他无效文本,则会出现“提交”*出现同样,导致与之前相同…即两个*符号.

解决方法

您应该向验证器添加display =“Dynamic”.

<asp:requiredFieldValidator runat="server" ControlTovalidate="txtMyDecVal" 
   Text="*" ErrorMessage="Enter a value" display="Dynamic" />
<asp:RangeValidator runat="server" ControlTovalidate="txtMyDecVal" Type="Double"
   MinimumValue="0" MaximumValue="999.99" Text="*"
   ErrorMessage="Value must be between 0 and 999.99" display="Dynamic" />
<asp:RangeValidator runat="server" ControlTovalidate="txtMyDecVal" Type="Double"
   MinimumValue="0" MaximumValue="999.99" Text="*"
   ErrorMessage="Value must be between 0 and 999.99"
   ValidationGroup="SaveGroup"  display="Dynamic"/>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐