0

这个问题可能很难传达。目标是确保输入到文本框中的日期至少从出生日期算起 18 年。

我有一个文本框:

<asp:TextBox ID="DateFrom" runat="server"/> 

我有一个范围验证器:

<asp:RangeValidator ID="RangeValidator1" runat="server" ControlToValidate="DateFrom"    ErrorMessage="Age has to be more than 18 years" Type="Date"></asp:RangeValidator>

我有一个实体对象:

rvtxtExecutiveDateTo.MinimumValue = (insiderObj.Insider.dateBirth ??     DateTime.MinValue).ToString("MM/dd/yyyy");

我在后面的代码中将范围验证器设置为:

 RangeValidator1.MinimumValue = (insiderObj.Insider.dateBirth ??    DateTime.MinValue.AddYears(-18)).ToString("MM/dd/yyyy");
4

1 回答 1

0

问题似乎AddYears方法调用的位置有关。

你有:

(insiderObj.Insider.dateBirth ?? DateTime.MinValue.AddYears(-18))

你可能的意思是:

(insiderObj.Insider.dateBirth ?? DateTime.MinValue).AddYears(-18)

当然,这假设它dateBirth是一个可为的值 ( DateTime?)。否则,根本没有理由拥有?? DateTime.MinValue

此外,您不应在调用中对MM/dd/yyyy格式进行硬编码。ToString根据MSDN 文档

笔记

如果在没有以编程方式为应用程序设置区域性的情况下ValidationDataType.DateBaseCompareValidator.Type属性指定,则应YYYY/MM/DDMaximumValueandMinimumValue属性使用与区域性无关的格式,例如 ,。否则,可能无法正确解释日期。

将您的格式切换为"yyyy/MM/dd",或将您的应用程序配置为具有文化意识,并CultureInfo.CurrentCulture完全传递或省略该参数。

于 2014-09-11T19:57:40.533 回答