0

我对 Asp.net MVC4 中的日期验证有疑问。我正在使用数据注释进行日期验证,如下所示

   [DataType(DataType.Date)]
   [AllowHtml]
   [DisplayFormat(HtmlEncode = false, ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]      
   [Display(Name = "Date Of Birth")]
   public Nullable<System.DateTime> DateOfBirth { get; set; }

接下来,在 Html 页面中,我在 MVC Html 表单中使用以下内容

@Html.TextBoxFor(model => model.UserSettings.DateOfBirth, 
                          String.Format("{0:dd/MM/yyyy}",
                          model.UserSettings.DateOfBirth), 
                       new { id = "DoB", @class = "brth-ipt" })

最后,我正在使用 Jquery 日期选择器,如下所示

$(function () {
    $("#DoB").datepicker("destroy");
    $("#DoB").datepicker({
        showOn: "both",
        beforeShow: customRange,
        dateFormat: "dd/mm/yy",  //"mm-dd-yy",
        firstDay: 1,
        changeFirstDay: false,
        changeMonth: true,
        changeYear: true,
        yearRange: "-150:+0"
    });
});

我的问题是,当我从 datepicker 中选择一个日期时,它显示为 mm/dd/yyyy 格式并且工作正常。

但是当我再次加载页面以编辑表单时,它以 mm-dd-yyyy 格式显示。现在,当我保存表单而不更改前一个日期(mm-dd-yyyy 格式)时,我无法保存表单,因为数据注释验证给我一个错误。“日期格式无效”。

我无法解决这个问题。

4

3 回答 3

0

尝试这个:

    [DataType(DataType.Date)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    [Display(Name = "Date Of Birth:")]
    public DateTime? DateOfBirth { get; set; }

据我所知,你甚至不需要使用Jquery Date picker. 该框架带有内置的帮助器来选择您的日期。

在你看来

    <div class="editor-label">
        @Html.LabelFor(model => model.DateOfBirth )
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.DateOfBirth )
        @Html.ValidationMessageFor(model => model.DateOfBirth )
    </div>

这是在谷歌浏览器中测试的

于 2013-04-07T19:31:27.887 回答
0

Html.TextBoxFox()[DisplayFormat]考虑。要利用此属性并实现您的目标,您可以使用

Html.EditorFor(x => x.UserSettings.DateOfBirth, new {id = "DoB", @class = "brth-ipt"})
于 2013-04-07T19:37:31.520 回答
0

我遇到了同样的事情,终于找到了解决我的问题的方法。我在 ViewModel 中做了这个数据注释

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]

我的日期选择器中的这段代码 < div >

<div class="input-group date" id="mydatepicker" data-date-format="MM-dd-yyyy">
   <input asp-for="MyDate" type="text" class="form-control" />
   <span class="input-group-addon">
      <i class="glyphicon glyphicon-calendar"></i>
   </span>
</div>

我把这段代码放在jquery中通过ajax发送

$('#calender-container .input-group.date').datepicker({
   todayBtn: true,
   calendarWeeks: true,
   todayHighlight: true,
   autoclose: true,
}).datepicker('update', new Date());

当我将数据日期格式从“mm-dd-yyyy”更改为
“MM-dd-yyyy”时,这很有趣,这给了我无效的模型状态,一切都变得有效。

于 2018-07-29T08:02:17.497 回答