首頁 > 後端開發 > C++ > 如何使用.NET中的IvalidatableObject實施條件屬性驗證?

如何使用.NET中的IvalidatableObject實施條件屬性驗證?

Susan Sarandon
發布: 2025-01-28 11:41:39
原創
865 人瀏覽過

How to Implement Conditional Property Validation Using IValidatableObject in .NET?

使用ivalidatableObject

> IValidatableObject接口提供了一種在.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)
    {
        var results = new List<ValidationResult>();
        if (Enable)
        {
            // Conditionally validate Prop1 and Prop2
            Validator.TryValidateProperty(Prop1, new ValidationContext(this, null, null) { MemberName = "Prop1" }, results);
            Validator.TryValidateProperty(Prop2, new ValidationContext(this, null, null) { MemberName = "Prop2" }, results);

            // Add a custom conditional validation rule
            if (Prop1 > Prop2)
            {
                results.Add(new ValidationResult("Prop1 must be less than or equal to Prop2"));
            }
        }
        return results;
    }
}</code>
登入後複製

此代碼使用Enable屬性來控制驗證。 如果Enable為true,則使用Prop1>屬性驗證Prop2>> [Range] Prop1>確保Prop2>的自定義規則不大於Validator.TryValidateProperty()>。 results方法是關鍵;它僅在驗證失敗時將驗證錯誤添加到

列表中。

>

使用此驗證:
<code class="language-csharp">public void PerformValidation()
{
    var toValidate = new ValidateMe
    {
        Enable = true,
        Prop1 = 6,  //This will cause a validation error
        Prop2 = 2
    };

    bool validateAllProperties = false; // Important: Set to false for conditional validation

    var results = new List<ValidationResult>();
    bool isValid = Validator.TryValidateObject(toValidate, new ValidationContext(toValidate, null, null), results, validateAllProperties);

    //Process validation results (results list)
}</code>
登入後複製

validateAllProperties設置falseValidator.TryValidateObject()至關重要。 這樣可以防止IValidatableObject覆蓋條件驗證邏輯。 此方法結合了.NET應用程序中靈活和可靠的對象驗證的有條件驗證。

以上是如何使用.NET中的IvalidatableObject實施條件屬性驗證?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板