0

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

谢谢

4

2 回答 2

2

yyy不会工作。有yy两位数显示和yyyy四位数显示年份。所以你可能错过了一个y

于 2013-06-18T12:05:28.380 回答
0

正如另一位用户提到的,没有yyy格式。yy分别为2或yyyy4 位年份。

此外,DataFormatString需要令牌索引(如 a String.Format),因此不仅仅是日期输出,而是将其包装在令牌语法中:

[DisplayFormat(DataFormatString = "{0:dd-MMM-yyyy}", ApplyFormatInEditMode = true)]

此外,如果你真的想要更多的控制(而不是反对使用 jQuery-UI),你可以创建一个编辑模板DateTime并使用DatePicker控件:

~/Views/Shared/EditorTemplates/DateTime.cshtml

@model DateTime?
@Html.TextBox(String.Empty,  String.Format("{0:dd-MMM-yyyy}", Model.HasValue ? Model : DateTime.Today), new { @class = "datepicker"})

然后你必须在页面中引用 jQuery 和 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)

于 2013-06-18T12:18:15.083 回答