我正在使用内置的jQuery验证
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
到目前为止,除了datetime之外,所有字段都可以正常工作。没关系,但不是万无一失。我只能键入数字和斜杠。
但这意味着我可以键入3/4//4///4//
,当然会在提交时返回null参数,因为它不再适合日期时间。 (我确实使用了一个日期选择器来选择它,但你仍然可以在框中输入。)
所以我需要:
##/##/####
格式答案 0 :(得分:1)
您可以使用该框的readonly属性,但仍然允许用户突出显示要复制的文本等。我通常更喜欢使用disabled属性,因为这可以防止用户操纵或使用该框。使用禁用的唯一缺点是在提交表单时不会提交该框,但如果这不是问题,那么我更喜欢使用该属性。
另一种选择是编写自己的javascript函数来执行验证。我有一个很久以前写过的地方,如果你想使用那种方法,我可以帮助你。
答案 1 :(得分:1)
最后,我在模型上使用了Regex属性:http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.regularexpressionattribute.aspx
[RegularExpression(@"^(((0[1-9]|[12]\d|3[01])\/(0[13578]|1[02])\/((19|[2-9]\d)\d{2}))|((0[1-9]|[12]\d|30)\/(0[13456789]|1[012])\/((19|[2-9]\d)\d{2}))|((0[1-9]|1\d|2[0-8])\/02\/((19|[2-9]\d)\d{2}))|(29\/02\/((1[6-9]|[2-9]\d)(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00))))$", ErrorMessage = "Must be a valid date of format dd/mm/yyyy.")]
这在表格dd / mm / yyyy上有效,并确保有效日期,包括闰年。
修改强>
进行此类验证的更好方法是自定义验证属性。 http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.customvalidationattribute.aspx
Google for for tutorials。