asp.net coreで、ivalidatableobjectを使用して条件付き検証を実装
ivalidatableObjectインターフェイスは、ASP.NETコアオブジェクトを検証するための実用的なツールです。これにより、属性を比較したり、条件検証シナリオを処理できるカスタム検証ルールを定義できます。
インターフェイスの一般的なケースは、特定の条件下でのみ特定の属性を検証することです。たとえば、次のコードフラグメントは、設定ロゴの有効化が設定されている場合にのみ検証できるオブジェクトを示しています。
この方法は、すべての場合に最も適したものではありません。なぜなら、値メソッドの有効なロゴをチェックし、効果的な結果を手動で返す必要があるからです。
<code class="language-csharp">public class ValidateMe : IValidatableObject
{
[Required]
public bool Enable { get; set; }
[Range(1, 5)]
public int Prop1 { get; set; }
[Range(1, 5)]
public int Prop2 { get; set; }
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (!this.Enable)
{
// 返回有效结果
yield break;
}
else
{
// 检查Prop1和Prop2是否满足其范围要求,并相应地返回结果
if (this.Prop1 < 1 || this.Prop1 > 5)
{
yield return new ValidationResult("Prop1必须在1到5之间", new[] { "Prop1" });
}
if (this.Prop2 < 1 || this.Prop2 > 5)
{
yield return new ValidationResult("Prop2必须在1到5之间", new[] { "Prop2" });
}
}
}
}</code>
もう1つの方法は、VALIDATOR.TRY VALIDATEPROPERTY()メソッドを使用することです。この方法では、特定の属性の検証を指定できます。
この場合、検証が失敗した場合にのみ、validator.tryvalidateProperty()メソッドは、結果セットに検証結果を追加します。この方法を使用することにより、オブジェクトのオブジェクトに従って属性を条件付きで検証して、検証ロジックをより柔軟で維持しやすくすることができます。 ここには、間違った属性をより明確に指摘するためにがここに追加されていることに注意してください。
以上がivalidatableObjectを使用してASP.NETコアで条件付き検証を実装する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。