我有一个数据录入字段,我正在收集笔记.每个音符都需要音符数据元素.这是我的模特:
public interface INoteDataEntryviewmodel : IMobilePageDataContract { int CourseId { get; set; } [required(ErrorMessage = @"Note is required")] String Note { get; set; } [DisplayName(@"Note Date")] DateTime NoteDate { get; set; } }
我正在使用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.
谢谢你的帮助.
解决方法
客户端验证不适用于Html.TextAreaFor()帮助程序,这里是
related issue reported on Codeplex.
要使其工作,您必须使用[DataType(DataType.MultilineText)]属性修饰’Note’属性.在视图中,使用Html.EditorFor()帮助程序而不是Html.TextAreaFor()帮助程序mehthod.
更新型号:
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>