比较Validator进行日期验证

时间:2014-09-17 05:47:34

标签: c# asp.net ajax calendarextender comparevalidator

以下是我用来在asp.net中选择日期的代码

我使用文本框显示日期和图像以显示日历图标,使用Ajax日历扩展程序以dd-mmm-yyyy格式选择日期。

<asp:TextBox ID="txtReqCompDate" runat="server"
    ToolTip="Select Analysis Required Date" CssClass="formtext"
    CausesValidation="True">
</asp:TextBox>
<asp:ImageButton ID="ibReqCompletionDate" runat="server"
    ImageUrl="~/Images/Calendar.png" ImageAlign="AbsBottom" Height="15px" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator5" runat="server"
    ControlToValidate="txtReqCompDate" Display="Dynamic" Text="Required"
    ErrorMessage="Analysis Required Date" ValidationGroup="valProjForm"
    SetFocusOnError="True" Font-Size="Smaller">
</asp:RequiredFieldValidator>
<asp:CompareValidator runat="server" ID="cmp1"
    ErrorMessage="The date must be greater than todays date"
    ControlToValidate="txtReqCompDate" Type="Date" Operator="GreaterThan" />
<cc1:CalendarExtender ID="CalendarExtender1" runat="server"
    PopupButtonID="ibReqCompletionDate"
    TargetControlID="txtReqCompDate" Format="dd-MMM-yyyy" Enabled="True">
</cc1:CalendarExtender>

即使我在页面加载中使用此行也没有用。

cmp1.ValueToCompare = DateTime.Now.ToShortDateString();

如果有人使用comparevalidator选择日期少于今天的日期,请建议我立即显示消息。

我需要在我的网站的几个页面中使用类似的功能。并且在同一页面中选择一个大于txtReqCompDate的日期。

或者请建议我在ajax calenderextender中禁用之前的日期并在Ajax扩展程序中显示当前日期之前的日期,而不会影响我当前的代码功能,因为我在.net 2.0中编码。

我的主要问题是,它显示验证,如果日期小于今天的日期,即使日期大于当前日期。始终显示错误消息,无论我使用何种验证器,比较或范围

2 个答案:

答案 0 :(得分:1)

Type设置为String的{​​{1}},然后在后面的代码中获取日期并将其格式化为CompareValidator作为您的要求(string )“区分大小写”。我已经通过手动输入日期来测试此代码,但它确实有效。

"dd-MMM-yy"

<强>代码:

<asp:CompareValidator runat="server" ID="cmp1"
ErrorMessage="The date must be greater than todays date"
ControlToValidate="txtReqCompDate" Type="String" Operator="GreaterThan" />

答案 1 :(得分:0)

使用范围验证器

代替比较验证器
 **In html**  

 <asp:RangeValidator ID="RangeValidator1" runat="server">  
    </asp:RangeValidator>  

 **C#**
     RangeValidator1.ControlToValidate = "txtReqCompDate";  
     RangeValidator1.Type = ValidationDataType.Date;  
     RangeValidator1.MinimumValue = DateTime.Now.ToShortDateString();  
     RangeValidator1.MaximumValue = DateTime.Now.AddDays(7).ToShortDateString();  
     RangeValidator1.ErrorMessage = "Select date between today to next 7 days!";  

您可以根据自己的要求进行修改。