ASP验证器:仅验证小写字母和大写字母
问题描述:
<asp:Label ID="lblDriving" runat="server" CssClass="lblDriving">Driving (y/n)</asp:Label>
<asp:TextBox ID="tbDriving" runat="server" CssClass="tbDriving"></asp:TextBox>
<asp:RequiredFieldValidator ID="rfvDriving" runat="server" CssClass="errorAsterik" ErrorMessage="Please enter y or n in lowercase only" ControlToValidate="tbDriving">*</asp:RequiredFieldValidator>
<asp:RangeValidator ID="rvDriving" runat="server" CssClass="errorAsterik" ErrorMessage="Please enter n or y in lower case" ControlToValidate="tbDriving" MinimumValue="n" MaximumValue="y">*</asp:RangeValidator>
如何验证它,以便用户可以使用ASP.NET验证器输入小写字母y/n或大写字母Y/N?ASP验证器:仅验证小写字母和大写字母
答
你可以使用的RegularExpressionValidator:
<asp:RegularExpressionValidator ID="rvDriving" runat="server"
CssClass="errorAsterik" ErrorMessage="Please enter n or y"
ControlToValidate="tbDriving"
ValidationExpression="[yYnN]">*</asp:RegularExpressionValidator>
答
您将不得不使用CustomValidator
,因为CompareValidator
与Type=String
比较区分大小写。
<asp:CustomValidator id="ValidDriving"
ControlToValidate="tbDriving"
ErrorMessage="Enter y/Y or n/N"
OnServerValidate="ValidateDriving"
ClientValidationFunction="ValidateDriving_JS"
runat="server"/>
服务器验证:
protected void ValidateDriving(object source, ServerValidateEventArgs args)
{
args.IsValid = StringComparer.OrdinalIgnoreCase.Equals("y", args.Value) ||
StringComparer.OrdinalIgnoreCase.Equals("n", args.Value);
}
如果你也想提供一个客户方的验证功能:
function ValidateDriving_JS(sender, args){
var upperVal = args.Value.toUpperCase();
args.IsValid = upperVal == "Y" || upperVal == "N";
return;
}
+0
谢谢你现在就去试试吧。 – MJCoder 2013-02-28 10:46:03
的'ErrorMessages'与您的要求相矛盾。所以你想让'y'或'Y'和'n'或'N'? – 2013-02-28 10:37:35
@TimSchmelter我喜欢这两个 - 大写和小写 – MJCoder 2013-02-28 10:44:19
我认为'p'被接受,因为它介于'n'和'y'之间。在这种情况下,RangeValidator不是你想要的。 – 2013-02-28 10:48:53