在我的一个ViewModel中,有一个IList类型的属性,其中EmploymentViewModel有一些属性,其中两个是Date属性“From”& “到”
[Display(Name = "From", Description = "Enter your Employment Start Date")]
[Date(ErrorMessage = "Date selected is invalid"), DataType(DataType.Date)]
public DateTime? From { get; set; }
[Display(Name = "To", Description = "Enter your Employment End Date")]
[Date(ErrorMessage = "Date selected is invalid"), DataType(DataType.Date)]
public DateTime? To { get; set; }
我正在使用DataAnnotationExtensions btw。
在界面上,我使用jQuery UI datepicker来允许用户选择日期。尽管放置了DataAnnotations,但“To”和“From”字段未显示任何“data-val”属性。
当我将显示的日期更改为无效日期时,jQuery不显眼的验证不会触发提及“选择的日期无效”的消息。
更新 - 更多信息
@Html.LabelFor(m => m.Employments[i].From, new { @class = "formLabel" })
@Html.TextBox(GetInputName(i, "From"), (@Model.Employments[i].From.HasValue ? @Model.Employments[i].From.Value.ToString("MM/dd/yyyy") : ""), new { @class = "textBox toDate dynHasDatepicker", placeholder = "mm/dd/yyyy" })
用于另一个属性“BirthDate”的相同View / ViewModel工作正常!
这里只有一个区别,主ViewModel包含两个属性: 1- BirthDate 2-就业(EmploymentViewModel的集合)
EmploymentViewModel包含From和To属性。这会影响验证过程吗?
有什么理由?
由于
答案 0 :(得分:0)
我可以想到两个原因之一。 1)页面上有Html.EnableClientScript(false)或2)你需要使用Html.TextBox的强类型版本,即。 Html.TextBoxFor。在这种情况下,您可能希望查看使用Html.BeginCollectionItem,如下所示:http://blog.stevensanderson.com/2010/01/28/editing-a-variable-length-list-aspnet-mvc-2-style/