有没有办法使用@Range 来验证 Regula 中的日期范围?(同上@Min 和@Max)
还是我需要使用@Custom?
@Range(min=
和
@Range(max=
似乎不接受任何 Date 类型的东西——只接受数字或字符串。
有没有办法使用@Range 来验证 Regula 中的日期范围?(同上@Min 和@Max)
还是我需要使用@Custom?
@Range(min=
和
@Range(max=
似乎不接受任何 Date 类型的东西——只接受数字或字符串。
不幸的是@Range
只接受数字。我认为你可以做这样的事情:
<input type="hidden"
name="date"
id="date"
data-constraints="
@Future(date='2000/1/1', format='YMD')
@Past(date='2010/1/1', format='YMD')"
/>
这确保了日期在2000/1/1
之前和之后2010/1/1
(即介于两者之间)。我没有记录该date
参数,因为我认为我在编写文档时没有实现它。对不起; 文档有点落后,因为我正在努力推出 Regula 的 1.3 版,这将有更多的好处。我很快就会开始更新文档!
我发现以下 hack 有效:
我添加了第二个隐藏输入,其中包含以以下格式输入的日期Date.getTime()
:
<input type="hidden" data-bind="value: myDateValue.getTime()" ... />
(我正在使用 Kendo MVVM,但我确信其他 MVVM 库可以处理相同的方法)
然后对于约束,在服务器端(在我的情况下为 ASP.NET MVC)我正在为最小值和最大值生成 Unix 时间:
@Range(min="<%= (dateTime1 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds %>",
max="<%= (dateTime2 - new DateTime(1970, 1, 1).ToLocalTime()).TotalSeconds %>")
编辑
需要使用.TotalMilliseconds
- 即便如此,仍然存在一些无法解释的差异。