我有一个正在验证的网格文本框:
<telerik:RadTextBox ID="txtMerchMin" runat="server" Text='<%# Bind("MerchandiseMinimumAmount") %>'></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="required" runat="server" ErrorMessage="* required" ControlToValidate="txtMerchMin"></asp:RequiredFieldValidator>
<asp:CompareValidator runat="server" ID="isNumbers" Type="Double" Operator="DataTypeCheck" ControlToValidate="txtMerchMin" ErrorMessage="* must be numeric" />
<asp:CompareValidator runat="server" ID="IsNonNegative" Type="Double" Operator="GreaterThanEqual" ControlToValidate="txtMerchMin" AmountToCompare="0" ErrorMessage="* should be non-negative"/>
<asp:CompareValidator ID="isLessThanMax" ControlToValidate="txtMerchMin" Type="Double" ControlToCompare="txtMerchMax" Operator="LessThan" Text="* should be less than max" runat="server"></asp:CompareValidator>
我希望验证按以下顺序运行并表现如下:
- 如果所需的验证失败,则仅显示所需的错误消息。
- 如果 isNumbers 验证失败,则仅显示 isNumber 的错误消息。
- 如果 isNonNegative 验证失败,则仅显示 isNonNegative 的错误消息。
- 如果 isLessThanMax 验证失败,则显示 isLessThanMax 的错误
仅消息。
由于现在编写的代码,当 txtMerchMin 中的值为非数字时,我同时看到 Numbers、is NonNegative 和 isLessThanMax 的错误消息。
有什么方法可以“短路”验证以获得我的预期行为吗?
只需制作一个在服务器端工作的自定义验证器并使用 if/else 语句即可实现您的行为。
例如:
<telerik:RadTextBox ID="txtMerchMin" runat="server" Text='<%# Bind("MerchandiseMinimumAmount") %>'></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="required" runat="server" ErrorMessage="* required" ControlToValidate="txtMerchMin"></asp:RequiredFieldValidator>
<asp:CustomValidator runat="server" ID="customValidator" Display="Dynamic" SetFocusOnError="true" ControlToValidate="txtMerchMin"></asp:CustomValidator>
在代码后面init
方法集(您也可以在标记中执行此操作)
customValidator.ServerValidate += new ServerValidateEventHandler(customValidator_ServerValidate);
然后在函数中实现你的逻辑:
protected void customValidator_ServerValidate(object source, ServerValidateEventArgs args)
{
bool isValid = true;
double price;
bool isDouble = Double.TryParse(args.Value, out price);
if(!isDouble) {
// not double (numeric)
isValid = false;
}
else if (...)
else if (...)
args.IsValid = isValid;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)