1

客户端(和服务器)端验证 Date 有什么简单的方法吗?

我的想法是为日、月和年设置 3 个输入字段。我正在使用带注释的模型和 AJAX 验证脚本来验证数据。我怎么能用 date 做到这一点?

我可以设置类似 day must be from Range<1, 31> 但是,如果月份是 2 月,那么值 31 无效......

4

3 回答 3

1

我同意@bAN - 最用户友好的方式是使用日期选择器。禁用 javascript 的用户必须手动将日期写入文本框中。在这种情况下,您还可以检测禁用的 javascript 并回退到没有日期选择器的版本。

如果你真的想要 3 个输入字段,你有几个选择。您的模型需要 3 个属性int day; int month; int year;。当您从客户端接收数据时,您将不得不通过尝试创建DateTime对象来手动进行验证。如果您指定了不正确的格式,它将引发异常:

try
{
    var date = new DateTime(model.Year, model.Month, model.Day);
    ...
}
catch(ArgumentOutOfRangeException exception)
{
    ModelState.AddModelError(...);
}

作为更愉快的用户体验,您可以改为使用 3 个下拉菜单。您可以根据选择的月份和/或在客户端运行验证来更改天数。

于 2011-03-18T09:50:03.220 回答
1

http://forums.asp.net/p/1500029/3546376.aspxhttp://www.dotnetspider.com/resources/17816-Javascript-date-validation.aspx .... 可能有助于 ui 希望。一切顺利

于 2011-03-18T07:17:02.903 回答
0

定义模型绑定器似乎是一个很好的解决方案。

于 2011-03-18T09:53:24.480 回答