2013-08-20 83 views
1

我已分配驗證創建發票時填充的日期字段的任務。它是一個帶有三個按鈕對象的文本框,允許用戶從日曆中選擇日期,輸入當天的日期或刪除日期條目。日期驗證 - 僅在本月內輸入日期

我的任務是確保用戶不能輸入不在當前月份之內的日期(雙重否定...棘手)。 我的任務是確保用戶只能在當前月份內輸入日期。 (更好?)

我不知道如何做到這一點。我應該使用asp控件還是在後端執行此操作?

我正在使用VB.NET。

+0

有必要提供一些代碼。你需要客戶端驗證(javascript)或服務器端(vb.net)? – IvanH

+0

伊萬,我很新,我甚至不知道這個問題的答案,但我想表現出一些主動性?一般來說哪個更好? – JettyJetty

+0

@IvanH - 應該始終進行服務器端驗證,因爲客戶端驗證可以繞過(即關閉JavaScript),但服務器必須始終驗證所有內容,無論如何。 –

回答

2

使用ASP.NET Validator控制,就像這樣:

標記:

<asp:TextBox id="YourTextBox" runat="server" /> 

<asp:RequiredFieldValidator ControlToValidate="YourTextBox" 
    Text="The date field is required!" runat="server" /> 
<asp:CompareValidator ID="compareValidatorDate" ControlToValidate="YourTextBox" 
    Type="Date" Operator="LessThan" ErrorMessage="Date must be from this month!" 
    Display="Dynamic" runat="server" /> 

注:我已經包括RequireFieldValidator,以確保我們有一個值來比較的日期驗證。

代碼隱藏(Page_Load):

If Not IsPostBack Then 
    Dim firstOfTheMonthDate As DateTime = FirstDayOfMonthFromDateTime(DateTime.Now) 
    Me.compareValidatorDate.ValueToCompare = firstOfTheMonthDate.ToString("d") 
End If 

代碼隱藏(效用函數):

Public Function FirstDayOfMonthFromDateTime(dateTime As DateTime) As DateTime 
    Return New DateTime(dateTime.Year, dateTime.Month, 1) 
End Function 

注:我包括一個函數來確定當前的第一天的日期月。 Page_Load正在調用該函數,然後將該函數作爲要比較的值傳遞給驗證程序。

+0

這真是太神奇了,謝謝。我可以接受並輸入需要的內容,但是我仍然會發布我正在使用的代碼 – JettyJetty

+0

@JettyJetty - 很棒,很高興它對你有用。如果可以的話,隨時也可以對我的答案進行投票。 :-) –

+0

我知道對!我只是多一點聲譽,我得到你先生 – JettyJetty