validating date format not working

2019-05-06 16:57发布

I'm having problem with date validation. In my View, I have a jQuery datepicker - I changed the format from yy/mm/dd to mm/dd/yy and now I get client-side validation errors. For example,

    The value '02/25/2014' is not valid for Date of Birth.

The Javascript:

$('#DateOfBirth').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/dd/yy",
    yearRange: "-90:-5"
});

The View Model:

    [Required]
    [Display(Name = "Date of Birth")]
    public DateTime? DateOfBirth { get; set; }

The View:

@Html.TextBoxFor(m=> m.DateOfBirth, "{0:MM/dd/yyyy}", new { @class = "datepicker" })

Any ideas on this?

Thanks.

UPDATE

I overlooked something. The validation actually fails on the server side. So this has nothing to do with jQuery. The ModelState.IsValid == false for me.

1条回答
一夜七次
2楼-- · 2019-05-06 17:17

I found the solution here: ASP.NET MVC3 - DateTime format and it had to do with globalization.

My locale is en-CA and

System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat.ShortDatePattern

gives "dd/MM/yyyy".

So in Web.config under <system.web> I included

<globalization uiCulture="en-US" culture="en-US"/>

So the DateTime format is working for me now.

P.S.

A safe way to pass dates without worrying about specific culture is to use ISO 8601 format - yyyy-MM-dd (or yyyy/MM/dd which also works).

查看更多
登录 后发表回答