2013-07-19 55 views
1

我的搜索表单有两个字段:Date和Object id。我使用的日期验证是这样的:ASP.NET:如果其他字段不为空,则跳过运行CompareValidator

<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date" 
           ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False" 
           ErrorMessage="error msg" EnableClientScript="True"/> 

ValueToCompare从代码隐藏(从现在起10天)设置。

我不想运行日期验证,当对象id字段不为空(允许搜索没有日期限制)。什么是不使用CustomValidator的解决方案?

回答

0

只需将“启用”属性设置为false在代码隐藏文件。验证在Page.Load事件之后执行,但在事件触发触发验证的按钮或控件之前执行。

//标记部

<asp:CompareValidator ID="cv" runat="server" Operator="GreaterThanEqual" Type="Date" 
ControlToValidate="dateControl" ValueToCompare="" Display="None" SetFocusOnError="False" 
ErrorMessage="error msg" EnableClientScript="True"/> 

//代码隐藏文件

protected void Page_Load(object sender, EventArgs e) 
    { 
     if(!String.IsNullOrEmpty(ObjectId.Text)) 
     { 
      cv.Enabled=false; 
     } 
    } 

现在,当验证将被执行,CompareValidator将被跳过。作为第二个选项,您还可以将“可见”属性设置为false。检查MSDN here

0

检查this.may是这个帮助你:

if(!string.IsNullOrEmpty(Objectid.Text)) 
cv.ValueToCompare=DateTime.Now.AddDays(1); 
else 
cv.ValueToCompare=DateTime.Now.AddDays(-10); 
相关问题