2012-04-06 4 views
5

Ich habe ein Dateneingabefeld, in dem ich Notizen sammle. Das Notendatenelement ist für jede Notiz erforderlich. Hier ist mein Modell:asp.net mvc TextAreaFor wird nicht als Pflichtfeld validiert

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

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

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

Sie können sehen, dass ich das Required-Attribut für die Note-Eigenschaft habe.

ich Razor bin mit der Dateneingabeformular Element anzeigen:

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

Wenn ich „@ Html.TextAreaFor“ dann gibt es keine Bestätigung für das gewünschte Feld, und ich kann das Formular abzuschicken. Wenn ich jedoch zu "@ Html.TextBoxFor" ändere, erfolgt die Validierung für das erforderliche Feld und ich kann das Formular nicht senden. Irgendwelche Ideen, warum die Validierung für TextAreaFor fehlschlägt? Ich benutze unaufdringlichen Ajax und bin jQueryMobile.

Danke für Ihre Hilfe.

Antwort

7

Die clientseitige Validierung funktioniert nicht für den Html.TextAreaFor() - Helper, hier ist die related issue reported on Codeplex.

Damit das funktioniert, müssen Sie die Eigenschaft 'Note' mit dem Attribut [DataType(DataType.MultilineText)] versehen. Und in der Ansicht, verwenden Sie Html.EditorFor() Helfer anstelle der Html.TextAreaFor() Helfer Mehthod.

Aktualisiert Modell:

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

Ausblick:

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

+1 hervorragende Arbeit um und explantion – Liam