这个问题可能难以传达。目标是确保输入文本框的日期是从出生之日起至少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");
答案 0 :(得分:0)
问题出现与AddYears
方法调用相同。
你有:
(insiderObj.Insider.dateBirth ?? DateTime.MinValue.AddYears(-18))
你可能意味着:
(insiderObj.Insider.dateBirth ?? DateTime.MinValue).AddYears(-18)
当然,这假定dateBirth
是可空的值(DateTime?
)。否则,根本没有理由?? DateTime.MinValue
。
此外,您不应在MM/dd/yyyy
电话中硬编码ToString
格式。每the MSDN documentation:
注意强>
如果您为
ValidationDataType.Date
属性指定BaseCompareValidator.Type
而未以编程方式为应用程序设置文化,则应使用与文化无关的格式,例如YYYY/MM/DD
,适用于MaximumValue
和MinimumValue
属性。否则,日期可能无法正确解释。
将您的格式切换为"yyyy/MM/dd"
,或将您的应用程序配置为具有文化感知功能,并通过CultureInfo.CurrentCulture
或完全省略该参数。