IValidatableObject を使用して ASP.NET MVC で条件付き検証を実装する
条件付き検証を使用すると、モデル内の特定の条件に基づいて検証ルールを指定できます。 ASP.NET MVC では、データ注釈はこれらのルールを定義する簡単な方法を提供しますが、より複雑な条件付きシナリオに対する柔軟性が欠けています。
「IsSenior」プロパティの選択に基づいて、「Senior.Description」プロパティを条件付きで要求する次のモデルとビューを考えてみましょう。
<code class="language-csharp">public class Person : IValidatableObject { [Required] public string Name { get; set; } public bool IsSenior { get; set; } public Senior Senior { get; set; } public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) { if (IsSenior && string.IsNullOrEmpty(Senior.Description)) yield return new ValidationResult("必须提供描述。"); } }</code>
ASP.NET MVC 3 (以降) では、IValidatableObject インターフェイスを利用し、Validate メソッドを実装して、条件付き検証をより効率的に処理できます。 Validate メソッドでは、条件付きルールを指定し、検証が失敗した場合に ValidationResult オブジェクトを返すことができます。
コード スニペットに示すように Validate メソッドを実装することで、「IsSenior」プロパティが true に設定されている場合に「Senior.Description」プロパティを必要とする条件付き検証ルールを効果的に追加します。このアプローチは、ASP.NET MVC アプリケーションで条件付き検証を実装するための、よりクリーンで柔軟な方法を提供します。
以上がIValidatableObject を使用して ASP.NET MVC で条件付き検証を実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。