当我使用jQuery UI datepicker时,为什么会出现验证错误?

时间:2015-04-14 09:05:37

标签: asp.net-mvc jquery-ui datepicker

我有一个input元素由以下Razor代码呈现:

@Html.TextBoxFor(model => model.DateOfBirth, "{0:dd/MM/yyyy}", new { @class = "datepicker" })
@Html.ValidationMessageFor(model => model.DateOfBirth, "", new { @class = "text-danger" })

DateOfBirth属性的类型为DateTime?。然后我有代码使类datepicker的元素充当日期选择器:

<script>
    $(function () {
        $(".datepicker").datepicker({
            dateFormat: "dd/mm/yy",
            changeYear: true,
            showOn: "button"
        }).next("button").button({
            icons: { primary: 'ui-icon-calendar' },
            label: "Select a date",
            text: false
        });
    });
</script>

当我导航到我的视图时,我会看到默认日期和日期选择器图标,当我点击图标时,我会看到日历下拉列表。但是,当我选择日期时,通常是第一次,我收到验证错误,说明:

  

DateOfBirth字段必须是日期。

然后,当我选择另一个日期时,错误消失了,只是随机返回&#39;在随后的日期选择。我还没有能够缩小哪些日期会导致错误,哪些日期不会导致错误。即使我将月份和日期保持在13岁以下,也要避免潜在的问题与“dd&#39;与&#39; mm&#39;;什么可能导致这些激怒验证错误?

1 个答案:

答案 0 :(得分:0)

您可以直接在模型中提供日期时间格式。我改变了你的代码,它对我来说很好。

<script type="text/javascript">

$(document).ready(function () {


    $('.dtPicker').datepicker({
        dateFormat: "dd-mm-yy",
        changeYear: true,
        showOn: "button"
    }).next("button").button({
        icons: { primary: 'ui-icon-calendar' },
        label: "Select a date",
        text: false
    });


});

@using(Html.BeginForm("",""))
{

<fieldset>
<div>
@Html.LabelFor(model=>model.Name)
@Html.TextBoxFor(model=>model.Name)
</div>
<div>
@Html.LabelFor(model=>model.DoB)
@Html.TextBoxFor(model=>model.DoB,new {@class="dtPicker"})
</div>

<input type="submit" value="submit" />
</fieldset>
}



 public class DatePick
{
    [DisplayName("UserName")]
    public string Name { get; set; }

    [DisplayName("DateOfBirth")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime? DoB { get; set; }
}