2013-07-19 64 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); 
相關問題