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"/>

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....