我有一个这样的视图模型:
public class Event
{
public string Name { get; set; }
[DateRangeValidator]
public DateTimeSpan DateRange { get; set; }
}
这包含另一个名为的类DateTimeSpan
,如下所示:
public class DateTimeSpan
{
public DateTime Start { get; set; }
public DateTime End { get; set; }
}
我想在客户端启用 jQuery 非侵入式验证,所以我编写了一个自定义数据注释验证器(它继承自ValidationAttribute
并实现IClientValidatable
)但它似乎只有在我将注释应用于类的Start
和End
属性时才有效DateTimeSpan
,而不是如果我将其应用于类的DateRange
属性Event
。
这在我看来:
@Html.LabelFor(x => x.DateRange.Start, "Start Date:") @Html.ValidationMessageFor(x => x.DateRange.Start)
@Html.TextBoxFor(x => x.DateRange.Start)
@Html.LabelFor(x => x.DateRange.End, "End Date:") @Html.ValidationMessageFor(x => x.DateRange.End)
@Html.TextBoxFor(x => x.DateRange.End)
Start
如果将注释添加到and属性, ASP.NET MVC 3 只会将不显眼的 JavaScript data-* 属性注入 HTML,End
如果将属性应用于属性,是否有办法使其工作DateRange
?
我不希望我的域模型类(DateRange
即非视图模型类)必须实现 IClientValidatable,因为我必须在域模型项目中引用 System.Web.Mvc。
编辑:不确定它是否相关,但该DateRangeValidator
属性会检查以确保结束日期发生在开始日期之后等。