我在尝试修改自己没有构建的表单时遇到了问题。

表单有一个日期值的asp:input字段,由requiredFieldVal和rangeVal检查。 rangeVal的类型设置为“date”。和最小值2000-01-01:最大值3000-01-01

现在问题,我正在尝试添加,以便用户也可以以“20000101”的形式输入日期。换句话说,没有“ - ”。

我尝试添加另一个带有Integer类型和最小值,最大值的rangeVal,并将它们放在同一个ValidationGroup中,但是没有用。

如何允许用户在日期输入字段中使用这两种格式(其中一种)格式。

提前谢谢!

有帮助吗?

解决方案

您可以使用正则表达式验证程序代替范围验证程序。我对Regex有点生疏,但我相信你能在这里找到一些东西。

http://www.regular-expressions.info/

以下是日期页面的链接:

http://www.regular-expressions.info/dates.html

试试这个,我认为它会起作用。如果没有,请告诉我,我会努力纠正它:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])))

另一篇文章提出了一个观点,这个正则表达式不会验证一些无效日期,如feb 31.在这种情况下,我只会创建一个继承自regex验证器的验证类,并覆盖EvaluateIsValid方法并检查它是否存在是一个实际的日期。这允许在客户端完成大部分验证,备份在服务器级别,无论如何应该进行二次验证。

其他提示

当您使用多个验证控件来验证单个控件时,所有验证控件都必须通过。

您可以使用正则表达式(正如Kevin所指出的那样)但是进行您需要的验证(检查该值是有效的 DateTime 对象并且在指定的范围内)将很难干净地完成

我建议您自己编写 CustomValidator 控制然后使用它来验证你想要的值。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top