C# 正则表达式验证控件禁用运行时

C# 正则表达式验证控件禁用运行时,c#,asp.net,C#,Asp.net,我有一个RegularExpressionValidator控件,它从文本框中检查正确的日期 我只需要在插入数据时选中该文本框。如果为空,则验证控件应允许进一步进行。但一直以来,控制否认了这一点 有一点是,当我在文本框中输入错误的日期时,会出现错误消息,但当我在输入错误的日期后输入正确的日期时,错误消息不会消失 我的代码是: <label for="textarea">Birth Date</label><asp:TextBox onkeypress="retur

我有一个RegularExpressionValidator控件,它从文本框中检查正确的日期

我只需要在插入数据时选中该文本框。如果为空,则验证控件应允许进一步进行。但一直以来,控制否认了这一点

有一点是,当我在文本框中输入错误的日期时,会出现错误消息,但当我在输入错误的日期后输入正确的日期时,错误消息不会消失

我的代码是:

<label for="textarea">Birth Date</label><asp:TextBox 
onkeypress="return isQuote(event);"  ID="txtbdate"  
onfocus="showCalendarControl(this);" onfocusout="return 
validdate(document.form1.txtbdate.text);"  CssClass="TextStyle1 uppercase"  
runat="server"></asp:TextBox>

<asp:MaskedEditExtender ID="MaskedEditExtender11" runat="server" 
TargetControlID="txtbdate" Mask="99-99-9999" MaskType="None" AutoComplete="true"
AcceptNegative="Left" ErrorTooltipEnabled="True" ClearMaskOnLostFocus="false"  
ClearTextOnInvalid="True" />

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server"  
ErrorMessage="Enter Valid Date" 

ValidationExpression="^(?:(?:(?:0?[1-9]|1\d|2[0-8])\/(?:0?[1-9]|1[0-2]))\/(?:(?:1[6-9]|
[2-9]\d)\d{2}))$|^(?:(?:(?:31\/0?[13578]|1[02])|(?:(?:29|30)\/(?:0?[1,3-9]|1[0-2])))
\/(?:(?:1[6-9]|[2-9]\d)\d{2}))$|^(?:29\/0?2\/(?:(?:(?:1[6-9]|[2-9]\d)(?:0[48]|[2468]
[048]|[13579][26]))))$" ControlToValidate="txtbdate" Display="Dynamic" 
 ValidationGroup="Save" ForeColor="Red" Font-Bold="true" SetFocusOnError="true" 
  ></asp:RegularExpressionValidator>
出生日期
请帮忙

提前感谢…

(如果这个答案不正确,请让我知道。不过,从您的评论中,我认为这是您的问题)

您需要在检查条件后启用
验证程序
;大概是这样的:

if (txtBdate.Text.Substring(0, 2) != "   .") { // not sure why you do this?
    RegularExpressionValidator1.Enabled = true;
}
现在,您需要验证页面。。您可以通过拨打以下电话来完成此操作:

Page.Validate(); // <--- this

if (Page.IsValid) {
    // etc..
}
else {
    // not valid..
}

Page.Validate();//验证程序在禁用时不会启动。默认情况下禁用它,并在调用
Validate
之前重新启用它,仅供参考您可以在生日的正则表达式中使用^([012]\d | 30 | 31)/(0\d | 10 | 11 | 12)/\d{4}$,如果这是它应该执行的操作。我在源文件和.cs文件中设置了Enabled=false,代码是:if(txtBdate.Text.Substring(0,2)!=“uuuu”){RegularExpressionValidator1.Enabled=true;}仍不工作…@Simon Whitehead如果(txtbate.Text.Substring(0,2)!=“_uuu”)被选中,以确定用户是否插入了任何日期。如果用户输入了日期,则我只想使用RegExValidator进行检查。如果用户未输入任何日期,文本框将包含(_uu/uu/uuu/u uuuuu)好的,你试过我上面说的吗?