2013-06-04 97 views
1

我有一個爲輸入日期而創建的Texbox。我使用了RegularExpressionValidator,格式爲dd-mm-yyyy。它正常工作。如何驗證日期?

<asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
    ControlToValidate="tb_date" ErrorMessage="dd-mm-yyyy" 
    ValidationExpression="\d{1,2}-\d{1,2}-\d{4}"> 
</asp:RegularExpressionValidator> 

但我還需要評估輸入的日期不應該小於今天的日期。我怎樣才能實現它?請幫助...

+0

您可以使用自定義驗證器。 –

回答

1

2你, 因爲你正在使用的RegularExpressionValidator驗證inputed日期的一個部分,所以我會爲您介紹一個解決方案通過使用驗證控制 驗證inputed最新與今天 - 第一設計者

<asp:Calendar ID="EndDate" runat="server" OnSelectionChanged="EndDate_OnSelectionChanged"> 
</asp:Calendar> 
<asp:TextBox runat="server" ID="txtEndDate"></asp:TextBox> 
<asp:CompareValidator runat="server" ID="CompareEndTodayValidator" ErrorMessage="The date must be less than today" 
    ControlToValidate="txtEndDate" Type="Date" Operator="LessThan"></asp:CompareValidator> 
    上後面的代碼

保護無效EndDate_OnSelectionChanged(對象發件人,EventArgs的) { txtEndDate.Text = EndDate.SelectedDate.ToShortDateString(); }

  • 上代碼隱藏

    CompareEndTodayValidator.ValueToCompare = DateTime.Now的頁面加載。ToShortDateString();

我希望它可以幫助你:)

1

您需要檢查以下條件:

if(Datetime.parse(txtdate.Text)<DateTime.Now) 
{ 
    Responce.Write("<head><script type='text/javascript'>alert('Date is greater than today's date');</script></head>"); 
} 
+0

那我該如何編寫顯示錯誤信息的代碼? user2431727

+0

@ user2431727請參閱我的編輯。 – Freelancer

2

您可以創建一個CustomValidator將值解析爲DateTime

DateTime.ParseExact(str, "dd-mm-yyyy") 

或者你可以創建一個驗證在JavaScript將該值轉換爲日期並與現在比較

0

嘿試試這個。

 string dateString = finalDate; // <-- Valid 
     string format = "dd/MM/yyyy"; 
     DateTime dateTime; 
     if (!DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture, 
      DateTimeStyles.None, out dateTime)) 
     { 
      message = "Date is not correct format.it should be in dd/mm/yyyy"; 
     } 

希望它可以幫助你。

0

我想你可以額外使用Range Validator。只需使用兩個(正則表達式和範圍)驗證器來控制一個控件。在這裏你可以找到關於這方面的討論:http://forums.asp.net/t/1287771.aspx

請注意,你可以添加一些邏輯驗證。請想象一下,例如,您必須在上傳之前檢查該文件小於10MB的pdf文檔。所以沒有推動的控制,你必須在邏輯方面實現自己的驗證。祝你好運!

1

試試這個

 if (DateTime.Now.Date > givenDate.Date) 
     { 
      //Show error message 
     } 
+0

什麼是DATE.Date? [哪個控件?] – Freelancer

+0

'givenDate'是解析的日期,問題是'需要評估輸入的日期不應該小於今天的日期' – Mzf

+0

答案的方法是正確的,但只有混淆的是,因爲用戶已經明確提到了TextBox的日期。 – Freelancer

0

創建的Timespan的對象,簡單地減去當前日期的INOUT日期。檢查這個代碼:TimeSpan ts = d1.Subtract(d2); 和這個線程:Date Difference in C#

1

我會把票投給一直TryParseExact

if (DateTime.TryParseExact(txtdate.Text, format, CultureInfo.InvariantCulture,  DateTimeStyles.None, out userDob)) 
{ 
    if (userDob < DateTime.Now) 
    //TODO: Message will displayed 
} 
+0

你不能投票! – Freelancer

+0

大聲笑..我只是提出我的意見:) – Microtechie

+0

好一個傢伙,現在你有資格upvotes。[withinn 19小時!!!] – Freelancer

0

使用自定義的驗證可能是一個更好的選擇。你應該做到最好。