2013-08-20 61 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