我有一个模型实现了IValidatlableObject,并通过Validate方法进行自定义错误检查。仅在某些操作中使用IValidatableObject
当我创建一个对象时一切正常,但是当我尝试编辑该对象时,我不想执行该自定义验证。
我怎么知道从什么行动我调用验证方法,以便不做验证?
更新: 这是心肌梗死模型:
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" });
}
}
}
}
所以当我创建的成分我想验证ALL(属性+ IValidatable) 但是当我编辑Ingrendient我只想验证属性(所以我的意思是跳过IValidatable) 任何方法来知道,在IValidatable方法,我从哪里调用验证?
谢谢!模型的
我没有想到它,但是,是的,这可能是一个不错的解决方案!!!所以我认为没有办法知道行动/控制器里面的验证方法 – Tekno 2012-03-12 20:21:46