asp.net mvc TextAreaFor未被验证为必填字段

Tom*_*eck 6 razor jquery-mobile unobtrusive-validation

我有一个数据录入字段,我正在收集笔记.每个音符都需要音符数据元素.这是我的模特:

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

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

    [DisplayName(@"Note Date")]
    DateTime NoteDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

您可以看到我有Note属性的Required属性.

我正在使用Razor来显示数据输入表单元素:

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

当我使用"@ Html.TextAreaFor"时,没有对必填字段进行验证,我可以提交表格.但是,如果我更改为"@ Html.TextBoxFor",则会对必填字段进行验证,但我无法提交表单.关于TextAreaFor验证失败原因的任何想法?我正在使用不引人注目的ajax并且是jQueryMobile.

谢谢你的帮助.

Kib*_*ria 8

客户端验证不适用于Html.TextAreaFor()帮助程序,这是Codeplex上报告的相关问题.

要使其工作,您必须使用该[DataType(DataType.MultilineText)]属性修饰"Note" 属性.在视图中,使用Html.EditorFor()helper而不是Html.TextAreaFor()helper方法.

更新型号:

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; }
}
Run Code Online (Sandbox Code Playgroud)

视图:

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