加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-16 09:39:56 所属栏目:asp.Net 来源:网络整理
导读:摘要 我有一个控件,有两个(几乎)相同的验证器,每个验证器链接到两个验证组.当光标离开控件时,ASP.NET会自动检查两个验证器.有没有办法只触发一个(没有设置EnableClientScript =“false”)所以模糊上没有显示两个*符号? 细节 我有一个带有两个按钮asp的表单
摘要

我有一个控件,有两个(几乎)相同的验证器,每个验证器链接到两个验证组.当光标离开控件时,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"/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读