【发布时间】:2015-11-16 05:32:24
【问题描述】:
我之前在尝试使用 datepicker 验证 asp.net mvc 4.5.1 中的日期时问过这个问题。现在,我已经消除了 datepicker,只是尝试使用模型中的数据注释和正则表达式来验证日期为 mm/dd/yyyy 格式以强制格式。这是我的代码:
Model:
[DisplayName("Start Date")]
[DataType(DataType.Date, ErrorMessage = "Date not valid.")]
[DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
[RegularExpression(@"^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$", ErrorMessage = "Date must be in format mm/dd/yyyy")]
public DateTime? DT_Project_Start { get; set; }
查看:
<div class="form-group">
@Html.LabelFor(model => model.DT_Project_Start, new { @class = "control-label col-md-2 CreateEditFieldNamesSpan" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.DT_Project_Start)
@Html.ValidationMessageFor(model => model.DT_Project_Start)
</div>
</div>
不起作用...在表单中验证可以完美运行,但是当我单击“提交”时,它会显示无效日期,不管怎样,即使日期有效且格式正确。有谁知道我错过了什么?
【问题讨论】:
-
因为您的财产是
DateTime。删除正则表达式(毫无意义)。您需要修改$.validator方法或使用jquery.globalize.js如果您使用jquery-ui datepicker,请参考this answer -
感谢您的回复。如果我删除正则表达式,如何强制客户输入 4 位数年份?在这一点上,我根本没有使用 datepicker。它不适用于 IE。
-
首先,如果你使用
@TextBoxFor(),[DataType]和[DisplayFormat]有点毫无意义。其次,您应该考虑询问有关日期选择器和 IE 的问题,因为它没有理由不工作。 -
另外,如果你想要
MM/dd/yyyy,为什么要允许-作为日期分隔符? -
我真的是 asp.net 的新手,只是学习一切。我花了很多时间试图得到这个。有人给了我正则表达式,我没有删除代码中的 - ,但我会这样做!我确实有一个关于 datepicker 的线程,并且我得到了它的工作(除了在 IE 中),但我仍然必须允许手动输入,所以仍然需要强制 4 位数的年份,无论哪种方式。如果@TextBoxFor() 不能与 [DataType] 和 [DisplayFormat] 一起使用,我应该使用什么?
标签: jquery asp.net regex asp.net-mvc validation