该字段必须是日期 - 在mvc中DatePicker验证失败

时间:2015-07-08 04:31:14

标签: javascript jquery asp.net-mvc validation datepicker

当我提交表单以致电后发布操作(方法)

时,我总是收到如下的验证消息

PatientDOB字段必须是日期。

我的模特是

[Required(ErrorMessage = "Patient DOB is required")]
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]

我的观点如下,

@{
    Layout = "~/Views/Shared/_FormLayout.cshtml";
    var dob= Model.PatientDOB == DateTime.MinValue ? string.Empty : Model.PatientDOB.ToString("yyyy-MM-dd");
    var phoneNo = Model.PatientPhoneNo == 0 ? string.Empty : Model.PatientPhoneNo.ToString();
}

<div class="row">
    <div class="col-lg-2">
        <label class="m-t-sm font-bold">Date of Birth:</label>
    </div>
    <div class="col-lg-2">
        @Html.TextBoxFor(a => a.PatientDOB, "{0:yyyy-MM-dd}", new {@class = "bg-empty txtline input-s-sm", Value = @dob})
    </div>
</div>

注意: 我在这个字段中使用jquery datepicker jquery代码

<script type="text/javascript">
    $(document).ready(function () {
        $('#PatientDOB').datepicker({
            dateFormat: "yy-mm-dd",
            showStatus: true,
            showWeeks: true,
            currentText: 'Now',
            autoSize: true,
            gotoCurrent: true,
            showAnim: 'blind',
            highlightWeek: true
        });
    });
</script>

之前它工作正常,但在代码中没有任何改变,但现在显示了这个验证问题。我尝试过这里给出的解决方案尝试解决方案。但没有解决我的问题。stackoverflow-question

1 个答案:

答案 0 :(得分:0)

这是一个非常古老的问题。它的最终解决方案 - 使用Globalize.js library并使用globalize方法更改jquery验证方法:

$(document).ready(function () {
    Globalize.culture("pl-PL"); //Not sure that it's your locale, maby you need other
    $.validator.methods.date = function (value, element) {
        return this.optional(element) || Globalize.parseDate(value);
    };
});

你应该在jquery验证加载后初始化这个脚本。