MVC日期字段验证

时间:2013-06-18 11:43:09

标签: c# asp.net-mvc

我希望用户以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日,则不会出现错误。

谢谢

2 个答案:

答案 0 :(得分:2)

yyy无效。两位数显示yy,年份四位数显示yyyy。所以你可能错过了一个y

答案 1 :(得分:0)

正如另一位用户所说,没有yyy格式。分别为{4}或{4}年yyyyyy

此外,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)