3

有没有办法使用@Range 来验证 Regula 中的日期范围?(同上@Min 和@Max)

还是我需要使用@Custom?

@Range(min=

@Range(max=

似乎不接受任何 Date 类型的东西——只接受数字或字符串。

4

2 回答 2

1

不幸的是@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 版,这将有更多的好处。我很快就会开始更新文档!

于 2013-08-30T16:00:53.173 回答
0

我发现以下 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- 即便如此,仍然存在一些无法解释的差异。

于 2013-08-28T12:34:55.553 回答