【问题标题】:Compare Validator for date validation比较验证器以进行日期验证
【发布时间】:2014-09-17 05:47:33
【问题描述】:

以下是我用来在 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 中编码时当前的代码功能。

我的主要问题在这里,它显示验证,如果日期小于今天的日期,即使日期大于当前日期。无论我使用什么验证器、比较或范围,都会显示错误消息

【问题讨论】:

  • 你可以使用 RangeValidator

标签: c# asp.net ajax calendarextender comparevalidator


【解决方案1】:

TypeCompareValidator 设置为String,然后在后面的代码中获取日期并将其格式化为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" />

代码:

string date = DateTime.Now.ToString("dd-MMM-yy");
cmp1.ValueToCompare = date;

【讨论】:

  • 它对我不起作用。我正在使用 AJAX 日历扩展器选择日期。所以当我选择今天少的日期时,它会显示错误,但是如果我选择这个月之后的日期,它会显示错误,它不应该显示。
【解决方案2】:

使用范围验证器代替比较验证器

 **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!";  

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

【讨论】:

  • 即使日期大于当前日期也会显示错误消息。在任何选择上显示错误。是因为我使用的格式。 dd-mmm-yyyy
  • 你为什么不在 javascript 中尝试这个而不使用任何验证,而只是在用户输入的日期小于今天的日期时发出警报
猜你喜欢
  • 2012-03-11
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-10
  • 1970-01-01
相关资源
最近更新 更多