C#属性 - 修改关系对象时重新生效

时间:2013-10-10 09:30:55

标签: c# asp.net-mvc attributes

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

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

我有一个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实体上(当然也会对它进行一些更改),但由于需求不仅仅是地址,因此验证活动不是一个好的解决方案。来自很多不同的实体。

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

1 个答案:

答案 0 :(得分: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

    }