Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MVC Datatype ErrorMessage

Tags:

asp.net-mvc

DataType ErrorMessage doesn't work. MVC4 DataType ErrorMessage doesn't seem to work. I have this dataannotation Attribute:

[DataType(DataType.DateTime, ErrorMessage = "Invalid date")]
public override DateTime? BirthDate { get; set; }

but client validation return this error:

The field BirthDate must be a date.

this is the Html portion:

 <input Value="" class="date" data-val="true" data-val-date="The field BirthDate  must be a date." data-val-required="El campo Fecha nacimiento es obligatorio" id="Patient_BirthDate" name="Patient.BirthDate" type="text" value="" />

Any idea?

like image 623
Donald Avatar asked Dec 17 '12 15:12

Donald


2 Answers

On MVC 4 I was able to change the error message in the View with Html.ValidationMessageFor.
See an example:@Html.ValidationMessageFor(model => model.FechaDesde, "Fecha Inválida")

like image 154
jmontenegro Avatar answered Sep 19 '22 06:09

jmontenegro


Short Answer: Purpose of DataType.DateTime is NOT to validate your DateTime entry for Birthday property. This is the reason. What it does is just formats the DateTime before displaying it on your view.

What you need is to have [Required] attribute on top of that as well.

However, what i usually prefer to use is Jquery Datepicker and it doesn't even allow user to enter any text, but a valid date.

Edit: When you decorate a model property with [DataType(DataType.Date)] the default template in ASP.NET MVC 4 generates an input field of type="date". Browsers that support HTML5 such Google Chrome render this input field with a date picker.

You may enforce this with code:

[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
public DateTime? BirthDate { get; set; }

In order to correctly display the date, the value must be formatted as 2012-09-28

like image 42
Yusubov Avatar answered Sep 23 '22 06:09

Yusubov