フォームの検証を検証しようとしていますが、別のプロパティがtrueに設定されている場合にのみプロパティを検証したいと考えています。他のプロパティがtrueに設定されている場合、mvcデータアノテーションを使用してプロパティ値を検証する方法
私の二つの性質:
[DisplayName(Translations.Education.IsFeaturette)]
public bool IsFeaturette { get; set; }
[DisplayName(Translations.Education.AddFeaturetteFor)]
[CusomValidatorForFeaturettes(IsFeaturette)]
public string[] Featurettes { get; set; }
カスタム注釈:
public class CusomValidatorForFeaturettes: ValidationAttribute
{
private readonly bool _IsFeatturette;
public CusomValidatorForFeaturettes(bool isFeatturette): base("NOT OK")
{
_IsFeatturette = isFeatturette;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value == null && _IsFeatturette)
{
var errorMessage = FormatErrorMessage(validationContext.DisplayName);
return new ValidationResult(errorMessage);
}
return ValidationResult.Success;
}
}
Basiclly isfeatureが真であるならば、Featurettesが値を持っている必要があります!
エラーイム取得:
オブジェクト参照が非静的フィールド、メソッドのために必要な、または プロパティ「EducationViewModel.IsFeaturette」が
私はcuzをこのプロパティは静的にすることはできませんされてこのプロパティはenityframeworkで設定されているため、これは私に問題をもたらしますが、私はこれを変更したくありません。プロパティを静的にしなくても、これをどのように達成できますか?
[foolproof](http://foolproof.codeplex.com/)の条件付き属性を使用することを検討してください。クライアント側とサーバー側の両方の検証を行う[RequiredIfTrue]属性を含めるようにしてください。 –
現時点ではフレームワークの使用を避けたいと考えています。あなたはこのように解決する方法を知っていますか? – ThunD3eR
プロパティにパラメータとしてプロパティを渡すことはできません。 'other'プロパティの名前を示すには、 '[CusomValidatorForFeaturettes(" IsFeaturette ")]'のように 'string'(定数値) 。 –