asp.net mvc TextAreaFor is not getting validated as a required field

jquery-mobile, razor, unobtrusive-validation

Solution

The client-side validation does not work for the Html.TextAreaFor() helper, here is the related issue reported on Codeplex.

To make it work, you have to decorate the 'Note' property with the `[DataType(DataType.MultilineText)]` attribute. And in the view, use `Html.EditorFor()` helper instead of the `Html.TextAreaFor()` helper mehthod.

Updated Model:

public interface INoteDataEntryViewModel : IMobilePageDataContract
{
    int CourseId { get; set; }

    [Required(ErrorMessage = @"Note is required")]
    [DataType(DataType.MultilineText)]
    String Note { get; set; }

    [DisplayName(@"Note Date")]       
    DateTime NoteDate { get; set; }
}

View:

<div data-role="fieldcontain">
    @Html.LabelFor(m => m.Note)
    @Html.EditorFor(m => m.Note)
    @Html.ValidationMessageFor(m => m.Note)
</div>

Problem

I have a data entry field where I'm gathering notes. The note data element is required for each note. Here's my model: ``` public interface INoteDataEntryViewModel : IMobilePageDataContract { int CourseId { get; set; } [Required(ErrorMessage = @"Note is required")] String Note { get; set; } [DisplayName(@"Note Date")] DateTime NoteDate { get; set; } } ``` You can see that I have the Required attribute for the Note property. I'm using Razor to display the data entry form element: ``` <div data-role="fieldcontain"> @Html.LabelFor(m => m.Note) @Html.TextAreaFor(m => m.Note) @Html.ValidationMessageFor(m => m.Note) </div> ``` When I use "@Html.TextAreaFor" then there is no validation for the required field and i can submit the form. However, if I change to "@Html.TextBoxFor", then validation happens for the required field and I cannot submit the form. Any ideas on why validation fails for TextAreaFor? I'm using unobtrusive ajax and am jQueryMobile. Thanks for your help.

Original source