0

在我拥有的一个 ViewModel 中,有一个 IList 类型的属性,其中就业视图模型有一些属性,其中两个是日期属性“From”和“To”

    [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 顺便说一句。

在界面上,我使用 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”的相同视图/视图模型完美!

这里只有一个区别,主 ViewModel 包含两个属性: 1- BirthDate 2- 就业(EmploymentViewModel 的集合)

EmploymentViewModel 包含 From 和 To 属性。这会影响验证过程吗?

有什么理由吗?

谢谢

4

1 回答 1

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-风格/

于 2012-05-11T13:27:27.533 回答