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メソッド内で、私がどこから来たのかを知る方法Validate を呼び出しますか?
ありがとう!!!