ASP.NET验证器比较两个日期差异不超过12个月

Pra*_*tel 3 asp.net custom-validators

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

Jør*_*ode 8

您将不得不使用a CustomValidator来执行此操作.在你的标记中,你会有这样的东西:

<asp:TextBox ID="txbStartDate" runat="server" />
<asp:TextBox ID="txbEndDate" runat="server" />
<asp:CustomValidator OnServerValidate="ValidateDuration"
    ErrorMessage="Dates are too far apart" runat="server" />
Run Code Online (Sandbox Code Playgroud)

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

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;
}
Run Code Online (Sandbox Code Playgroud)

请注意,上面的代码很容易抛出异常.您需要添加其他验证器以检查是否可以解析输入的日期,并且ValidateDuration应该修改该方法以确认在执行自己的测试之前已经通过了这些其他验证器.

此外,您可能还想添加另一个验证器来测试结束日期实际上是否大于(或等于)开始日期.打破此规则应该可能会引发自己的验证错误消息.

<asp:CompareValidator Operator="GreaterThanEqual" Type="Date"
    ControlToValidate="txbEndDate" ControlToCompare="txbStartDate"
    ErrorMessage="Let's get started first!" runat="server" />
Run Code Online (Sandbox Code Playgroud)