复杂模型的自定义数据注释

时间:2012-08-21 08:50:22

标签: asp.net-mvc unobtrusive-javascript

我有一个这样的视图模型:

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类的EndDateTimeSpan属性的注释,而不是我将其应用于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)

如果将注释添加到StartEnd属性,ASP.NET MVC 3只会将不显眼的JavaScript data- *属性注入到HTML中,是否有办法使其工作如果该属性是否适用于DateRange属性?

我不希望我的域模型类(DateRange,即非视图模型类)必须实现IClientValidatable,因为那时我必须在域模型项目中引用System.Web.Mvc。

编辑:不确定它是否相关,但DateRangeValidator属性会进行检查,以确保在开始日期之后发生结束日期等。

0 个答案:

没有答案