使用ASP.NET MVC中的Attribute Validators验证DateTimeOffset和TimeSpan

时间:2010-11-27 14:33:26

标签: asp.net asp.net-mvc validation

所以我已经使用Entity Framework设置了实体,这些实体具有String,DateTimeOffset和TimeSpan类型的一些属性。为了对字符串执行验证,我使用了相当简单的属性,如“[Required]”或“[StringLength]”,并且使用的控件是文本框。

我现在的问题是DateTimeOffset和TimeSpan,我不确定要使用什么控件,但更不确定用于验证输入的属性。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我不相信有一种方法可以从输入中推断数据类型。根据业务逻辑的需要对其进行处理似乎是唯一的途径。

答案 1 :(得分:-1)

由于它是一个时间跨度,你可以得到相等的分钟并对其进行IsNumeric调用 - 这是一个简单的自定义验证函数。

如果你使用两个日期计算时间差异,你可以使用DateDiff函数来计算差异并获得时间跨度 - 但如果你已经有了这个,记住一个时间跨度可以表示为多个时间单位,所以使用自定义函数使用IsNumeric。

否则,如果您不想编写自定义验证,则。最简单的方法是使用RangeValidator属性。放入最小和最大可能的数字,只是为了安全,并且当使用此属性进行验证时,如果它不是数字编号,它将返回False,所以你从单独的那里获得错误的字符串验证,并且你也能够验证时间跨度的可能值范围 - 如果范围不重要,则只需将上限设置为安全值,例如几百万分钟或某事(例如:Long.MaxValue或Integer.MaxValue)。

你也可以把Ticks作为时间跨度的值来比较范围,所以我相信TimeSpan.Ticks(),但只是将文本框发送到RangeValidator就足够了,它会检查它不是文本字符并检查范围和瞧,完成验证,无需自定义验证。

让我知道你是如何相处的,如果需要我还可以帮助你。