我有一个实现 IValidatlableObject 的模型,因此可以通过 Validate 方法进行自定义错误检查。
当我创建一个对象时一切都很好,但是当我尝试编辑该对象时,我不想进行自定义验证。
我怎样才能知道我正在调用 Validate 方法以便不进行验证?
更新:这是mi模型:
public class Ingredient : IValidatableObject
{
public int Id { get; set; }
[Required(ErrorMessage = "Required!!")]
public string Name { get; set; }
public virtual List<Product> Products { get; set; }
public Ingredient()
{
Products = new List<Product>();
}
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
using (var uow = new UnitOfWork())
{
var ingredient = uow.IngredientRepository.Get(i => i.Name ==Name).FirstOrDefault();
if (ingredient != null)
yield return new ValidationResult("Duplicate!!!.", new[] { "Name" });
}
}
}
}
因此,当我创建一个成分时,我想验证所有(属性 + IValidatable),但是当我编辑一个成分时,我只想验证属性(所以我的意思是跳过 IValidatable)任何要知道的方法,在 IValidatable 方法中,我来自哪里调用验证?
谢谢!!!