2012-04-06 11 views
5

Ho un campo di inserimento dati dove sto raccogliendo le note. L'elemento di dati della nota è richiesto per ogni nota. Ecco il mio modello:asp.net mvc TextAreaFor non viene convalidato come campo obbligatorio

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

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

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

Si può vedere che ho l'attributo Richiesto per la proprietà Note.

sto usando Razor per visualizzare il form di inserimento dati elemento:

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

Quando uso "@ Html.TextAreaFor" allora non c'è di convalida per il campo richiesto e posso inviare il modulo. Tuttavia, se cambio in "@ Html.TextBoxFor", la convalida avviene per il campo richiesto e non posso inviare il modulo. Qualche idea sul perché la validazione fallisce per TextAreaFor? Sto usando ajax non invadente e sono jQueryMobile.

Grazie per il vostro aiuto.

risposta

7

La convalida sul lato client non funziona per l'helper Html.TextAreaFor(), ecco lo related issue reported on Codeplex.

Per farlo funzionare, è necessario decorare la proprietà 'Note' con l'attributo [DataType(DataType.MultilineText)]. E nella vista, utilizzare l'helper Html.EditorFor() anziché il mehthod helper Html.TextAreaFor().

Aggiornato Modello:

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; } 
} 

Vista:

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

+1 ottimo lavoro intorno e explantion – Liam

Problemi correlati