有没有办法使用内置验证器来验证 asp.net 文本框的输入以用于两个不同的条件?文本框与日期选择器一起使用,目前我有这样的 RegularExpressionValidator 来验证:
<asp:TextBox ID="tbStartDate" runat="server" Width="100" CssClass="TextCompact">yyyy</asp:TextBox>
<asp:HyperLink ID="hlStartDate" runat="server" ImageUrl="~/Images/iconCalendar.gif"></asp:HyperLink><br />
<asp:RegularExpressionValidator ID="revStartDate" ControlToValidate="tbStartDate"
CssClass="TextCompact" runat="server" ErrorMessage="* Invalid Date" ValidationExpression="^(\d{4})$" />
每次输入无效日期时都会触发 - 您可以使用日期选择器,也可以输入日期字符串。
所以问题是我只想验证文本框中是否有数据。如果文本框为空,我希望它无需验证即可通过。
这是可能的还是需要自定义客户端验证?
谢谢,里修。
更新:
我决定编写自己的从 BaseValidator 类派生的验证器类并将其连接起来,但出现编译器错误。
namespace Abcdefg1234
{
public class Custom_Validator : BaseValidator
{
public Custom_Validator()
{
}
protected override bool EvaluateIsValid()
{
String value = this.GetControlValidationValue(this.ControlToValidate);
return ValidateControls(value.Trim());
}
public static bool ValidateControls(string value)
{
if(Regex.IsMatch(value, @"^(\d{4})$") == true)
return true;
else if(value == "")
return true;
else
return false;
}
}
}
然后我包含了页面指令标签:
<%@ Register TagPrefix="Cv" Namespace="Abcdefg1234" TagName="CustomValidaitonX" %>
和实际标签:
Cv:Custom_Validator ID="cvtbStartDate" ControlToValidate="tbStartDate" runat="server" ErrorMessage="* Invalid Date" />
我得到一个未知的服务器标签。有任何想法吗?谢谢。