6

我有一个数据输入字段,我正在收集笔记。每个注释都需要注释数据元素。这是我的模型:

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

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

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

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

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

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

当我使用“@Html.TextAreaFor”时,必填字段没有验证,我可以提交表单。但是,如果我更改为“@Html.TextBoxFor”,则会对必填字段进行验证,并且我无法提交表单。关于 TextAreaFor 为什么验证失败的任何想法?我正在使用不显眼的 ajax 并且是 jQueryMobile。

谢谢你的帮助。

4

1 回答 1

9

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

为了让它工作,你必须用属性装饰'Note'[DataType(DataType.MultilineText)]属性。并且在视图中,使用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; }
}

看法:

<div data-role="fieldcontain">
    @Html.LabelFor(m => m.Note)
    @Html.EditorFor(m => m.Note)
    @Html.ValidationMessageFor(m => m.Note)
</div>
于 2012-04-18T19:11:35.713 回答