Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET MVC 4 avoid generation of data-val-date for datetime

how can I avoid the generation of the html attribute "data-val-date" for the element created from a Datetime property?

The model:

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

The view:

@Html.LabelFor(m => m.DateOfBirth)
@Html.EditorFor(m => m.DateOfBirth)

In fact, I'm creating a three drop down lists element for selecting the date of birth, which don't give a value in a date format. Some solutions I've seen, consisted in a work around: removing the validation with a javascript. The solution I envisage is to split the DateTime property into three long one for each value (day, month, year).

like image 906
bado Avatar asked Sep 26 '12 16:09

bado


1 Answers

Ok, this took me an afternoon of work... apparently mvc4 decided that it was time to render a data-val-date="Message" on EVERY datetime property on the viewmodel. I've tried to modify this default behaviour but didn't succeed.

This solved my problems:

$.validator.addMethod('date',
    function (value, element) {
        return true; // since MVC4 data-val-date is put on EVERY vm date property. Default implementation does not allow for multiple cultures...
    });

You can also try to write your own editor template named "DateTime.cshtml" in your shared EditorFor folder, but don't use TextBoxFor there, because that one is polluted as well.

like image 194
nicojs Avatar answered Oct 16 '22 02:10

nicojs