C# RangeValidator限制范围为出生日期后18年

C# RangeValidator限制范围为出生日期后18年,c#,asp.net,validation,rangevalidator,C#,Asp.net,Validation,Rangevalidator,这个问题可能很难表达。目标是确保输入文本框的日期至少为出生日期后18年 我有一个文本框: <asp:TextBox ID="DateFrom" runat="server"/> 我已将代码隐藏中的范围验证器设置为: RangeValidator1.MinimumValue = (insiderObj.Insider.dateBirth ?? DateTime.MinValue.AddYears(-18)).ToString("MM/dd/yyyy"); 问题似乎在于Ad

这个问题可能很难表达。目标是确保输入文本框的日期至少为出生日期后18年

我有一个文本框:

<asp:TextBox ID="DateFrom" runat="server"/> 
我已将代码隐藏中的范围验证器设置为:

 RangeValidator1.MinimumValue = (insiderObj.Insider.dateBirth ??    DateTime.MinValue.AddYears(-18)).ToString("MM/dd/yyyy");
问题似乎在于AddYears方法调用的位置

你有:

(insiderObj.Insider.dateBirth ?? DateTime.MinValue.AddYears(-18))
你可能是说:

(insiderObj.Insider.dateBirth ?? DateTime.MinValue).AddYears(-18)
当然,这假设dateBirth是一个可为空的值DateTime?。否则,就没有理由拥有??DateTime.MinValue

此外,您不应该在ToString调用中硬编码MM/dd/yyyy格式。Per:

如果为BaseCompareValidator.Type属性指定ValidationDataType.Date而不以编程方式设置应用程序的区域性,则应为MaximumValue和MinimumValue属性使用区域性无关的格式,如YYYY/MM/DD。否则,可能无法正确解释日期

将格式切换为yyyy/MM/dd,或将应用程序配置为区域性感知,并传递CultureInfo.CurrentCulture或完全忽略该参数

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