私はIValidatlableObjectを実装するモデルを持っており、Validateメソッドによるカスタムエラーチェックがあります。一部のアクションでのみIValidatableObject
オブジェクトを作成すると問題はありませんが、そのオブジェクトを編集しようとすると、そのカスタム検証は実行されません。
バリデーションを行わないために、私がValidateメソッドを呼び出している動作からどのように知ることができますか?
更新:私は成分を作成するときに、私はすべてを(+ IValidatable属性) を検証したいが、私はIngrendientを編集するとき、私は唯一の希望
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" });
}
}
}
}
: これはMIモデルであり、属性を検証する(つまり、IValidatableをスキップすることを意味する) IValidatableメソッド内で、Validateを呼び出すメソッドを知る方法はありますか?
ありがとうございました!
私はそれではないと思います素晴らしい解決策!!!だから、アクション/コントローラをValidateメソッド内に知る方法はないと思う。 – Tekno