我希望用户以dd-MMM-yyy格式输入日期。因此,为了验证用户输入,我在模型中使用以下内容
[DisplayFormat(DataFormatString = "{dd-MMM-yyy}", ApplyFormatInEditMode = true)]
public DateTime ? SubmittedToDateTime { get; set; }
但是,我收到验证错误:字段SubmittedToDateTime必须是日期。当用户输入时:2013年6月12日。
我还注意到,如果将字段值从2013年6月12日更改为2013年6月12日,则不会出现错误。
谢谢
答案 0 :(得分:2)
yyy
无效。两位数显示yy
,年份四位数显示yyyy
。所以你可能错过了一个y
。
答案 1 :(得分:0)
正如另一位用户所说,没有yyy
格式。分别为{4}或{4}年yy
或yyyy
。
此外,DataFormatString
需要令牌索引(如String.Format
)所以不是仅仅输出日期,而是将其包含在令牌语法中:
[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]
另外,如果确实想要更多控制(并且不反对使用jQuery-UI),您可以为DateTime
创建一个编辑模板并使用DatePicker控件:
<强>〜/查看/共享/ EditorTemplates / DateTime.cshtml 强>
@model DateTime?
@Html.TextBox(String.Empty, String.Format("{0:dd-MMM-yyyy}", Model.HasValue ? Model : DateTime.Today), new { @class = "datepicker"})
然后你必须同时引用jQuery和amp;页面中的jQuery-UI并添加以下内容:
<script type="text/javascript">
$(function(){
$('.datepicker').datepicker({
dateFormat: 'dd-M-yy' // http://api.jqueryui.com/datepicker/#utility-formatDate
});
});
</script>
然后,在您的视图中,引用@Html.EditorFor(x => x.SubmittedToDateTime)