ASP.NET验证器比较两个日期的差异是否超过12个月[英] ASP.NET validator to compare two date difference is not more than 12 months

本文是小编为大家收集整理的关于ASP.NET验证器比较两个日期的差异是否超过12个月的处理方法,想解了ASP.NET验证器比较两个日期的差异是否超过12个月的问题怎么解决?ASP.NET验证器比较两个日期的差异是否超过12个月问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有两个 TextBox 控件用于开始日期和结束日期输入.我必须验证结束日期不大于开始日期 &开始日期和开始日期之间的差异结束日期不超过 12 个月.

推荐答案

你必须使用 CustomValidator 来做到这一点.在你的markyou中,你会有这样的东西:

<asp:TextBox ID="txbStartDate" runat="server" />
<asp:TextBox ID="txbEndDate" runat="server" />
<asp:CustomValidator OnServerValidate="ValidateDuration"
    ErrorMessage="Dates are too far apart" runat="server" />

在您的代码中,您定义了验证处理程序:

protected void ValidateDuration(object sender, ServerValidateEventArgs e)
{
    DateTime start = DateTime.Parse(txbStartDate.Text);
    DateTime end = DateTime.Parse(txbEndDate.Text);

    int months = (end.Month - start.Month) + 12 * (end.Year - start.Year);

    e.IsValid = months < 12.0;
}

请注意,上面的代码容易引发异常.您将需要添加额外的验证器来检查输入的日期是否可以被解析,并且应该修改 ValidateDuration 方法以确认这些其他验证器已经通过,然后再进行自己的测试.

此外,您可能还需要添加另一个验证器来测试结束日期实际上是否大于(或等于)开始日期.违反此规则可能会引发其自身的验证错误消息.

<asp:CompareValidator Operator="GreaterThanEqual" Type="Date"
    ControlToValidate="txbEndDate" ControlToCompare="txbStartDate"
    ErrorMessage="Let's get started first!" runat="server" />

本文地址:https://www.itbaoku.cn/post/1793775.html