【问题标题】:asp.net mvc TextAreaFor is not getting validated as a required fieldasp.net mvc TextAreaFor 未作为必填字段进行验证
【发布时间】:2012-04-06 15:59:17
【问题描述】:

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

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。

感谢您的帮助。

【问题讨论】:

    标签: jquery-mobile razor unobtrusive-validation


    【解决方案1】:

    客户端验证不适用于 Html.TextAreaFor() 助手,这里是 related issue reported on 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; }
    }
    

    查看:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多