4

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.

6
  • You have MM/dd/yyyy in your view, but mm/dd/yy in your JavaScript. Commented Feb 4, 2014 at 21:34
  • jQuery takes mm and .NET MM for numeric months. Commented Feb 4, 2014 at 21:40
  • But yy is not the same as yyyy. Commented Feb 4, 2014 at 21:44
  • For some reason jQuery datepicker uses yy for 4-digit year. Using yyyy gives something like 20142014. Commented Feb 4, 2014 at 21:47
  • 1
    You should make the answer in your question a real Answer and accept it. But use @Html.TextBoxFor(m=> m.DateOfBirth, "{0:MM/dd/yyyy}", new { @class = "datepicker" }) - don't attempt to override the model binding features of MVC. Commented Jan 23, 2015 at 11:47

1 Answer 1

1

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).

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.