是否有任何方法使用@Range驗證Regula中的日期範圍? (同上@Min和@Max)使用Regula驗證日期範圍
或者我需要使用@Custom?
@Range(min=
和
@Range(max=
似乎並不接受Date類型的東西 - 只有數字或字符串。
是否有任何方法使用@Range驗證Regula中的日期範圍? (同上@Min和@Max)使用Regula驗證日期範圍
或者我需要使用@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版本,這將有更多的好東西。我將很快開始更新文檔!
我發現下面的技巧的工作原理:
我補充說,包含的Date.getTime()
格式輸入的日期第二,隱藏輸入:
<input type="hidden" data-bind="value: myDateValue.getTime()" ... />
(我使用的劍道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
- 甚至因此有一些無法解釋的矛盾。
謝謝!文件很好,新的訴訟聲音聽起來不錯!對於記錄來說,使用字符串似乎可行 - 但由於我使用的是Unix時間戳,所以沒有理由認爲它不是整數值。 – sq33G
如果你使用紀元時間,'@ Range'應該可以工作。奇怪它並不是它可能是某種錯誤。如果可以,請提交錯誤報告。 –
時間問題在我的答案中描述的JavaScript Date.getTime和.NET方法之間。 Regula的作品非常漂亮。 – sq33G