OKとどんなリポジトリかなどに渡したら。私はこれを見て、私の方法が無駄であることを認識しました。
これはどのように見えるのですか?
私はExtendedValidationRequiredという注釈を作成しました。
拡張値の条件チェックを有効にするかどうかを示す静的な値があります。
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class ExtendedValidationRequiredAttribute : RequiredAttribute
{
// Summary:
// Initializes a new instance of the System.ComponentModel.DataAnnotations.RequiredAttribute
// class.
public ExtendedValidationRequiredAttribute()
{
}
// Summary:
// Checks that the value of the required data field is not empty.
//
// Parameters:
// value:
// The data field value to validate.
//
// Returns:
// true if validation is successful; otherwise, false.
//
// Exceptions:
// System.ComponentModel.DataAnnotations.ValidationException:
// The data field value was null.
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (ExtendedValidation.IsExtendedValidationEnabled(validationContext.ObjectType))
{
return base.IsValid(value,validationContext);
}
else
{
return ValidationResult.Success;
}
}
}
(イムは、直接そのクラスを編集する場合など)、私はその後、私の時々に必要なマークアップ[ExtendedValidationRequired(typeof演算(MyClassName))]のフィールドは、
これは、同様のバリデータの他のタイプのために働きます。
私は実際に先に行って、バリ「たまにON」のセットを作成し、別のクラスに自分の設定を移動: のpublic staticクラスExtendedValidation { プライベート静的辞書extendedValidationExemptions =新しい辞書();
/// <summary>
/// Disable extended validation for a specific type
/// </summary>
/// <param name="type"></param>
public static void DisableExtendedValidation(Type type)
{
extendedValidationExemptions[type] = true;
}
/// <summary>
/// Clear any EV exemptions
/// </summary>
public static void Reset()
{
extendedValidationExemptions.Clear();
}
/// <summary>
/// Check if a class should perform extended validation
/// </summary>
/// <param name="type"></param>
/// <returns></returns>
public static bool IsExtendedValidationEnabled(Type type)
{
if (extendedValidationExemptions.ContainsKey(type))
{
return false;
}
else
{
return true;
}
}
}
}
子供を編集する際に、今私はちょうどExtendedValidationをオフにしてください。
E.G:子を編集するときに、DisableExtendedValidation(typeof(Parent))を実行して途中で取得できません。
編集:うーん、私はこれはかなり動作しません。 - validationProperty内でどのクラスを見ているのか判断できますか?私はいつも親のプロパティを渡すことができたと思うが、それはピタです
あなたのモデルはEntity Frameworkモデルだと思いますか?このため、エンティティモデルをビューのモデルとして使用しないでください。 ViewModelsはビューごとに固有のものでなければなりません。次に、画面ごとに異なる検証を行うことができます。 – Simon