我有一個模型實現了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