0

我有一个案例,我的项目中有活动,其中可以有地址、类别和其他内容的列表。

在网站中,活动要求至少有一个地址,即“访问地址”。

我有一个 ValidationAttribute (CheckStateAttribute),每次我直接修改活动时都会触发。但是当我修改连接到它的地址时它不会触发。

[CheckState]
public partial class Activity
{
    public Activity()
    {
        this.Address = new HashSet<Address>();
    }

    public int ID { get; set; }
    public string Title { get; set; }

    public virtual ICollection<Address> Address { get; set; }
}

我的一个想法是将 CheckState 也放在 Address 实体上(当然要对其进行一些更改),但是由于除了地址之外还有更多要求,因此从很多地方验证活动并不是一个好的解决方案不同的实体。

有没有人知道在修改实体“活动”的任何关系对象时验证实体“活动”的方法?

4

1 回答 1

0

您将从 IValidatableObject 继承并实现如下所示的 Validate 方法

[MetadataType(typeof(SeasonMetaData))]
    public partial class Season : IValidatableObject
    {
        #region IValidatableObject Members

        public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
        {
            if (this.StartDate.CompareTo(this.EndDate) >= 0)
            {
                yield return new ValidationResult("The Season End must be after the Season Start.", new String[] { "EndDate" });
            }
        }

        #endregion

    }
于 2013-10-10T11:05:41.457 回答