"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > IvalidatableObject स्थिति सत्यापन लागू करें: विशेषता स्तर और परिदृश्य अज्ञानता

IvalidatableObject स्थिति सत्यापन लागू करें: विशेषता स्तर और परिदृश्य अज्ञानता

2025-04-16 को पोस्ट किया गया
ब्राउज़ करें:492

How to Implement Conditional Validation in IValidatableObject with Property-Level Attributes and Scenario-Based Ignoring?

]

सवाल:

] हालांकि, मैं एकल संपत्ति को मान्य करने के लिए गुणों का उपयोग करना चाहता हूं और कुछ परिदृश्यों में जो विशिष्ट गुणों को अनदेखा करते हैं। क्या मेरा निम्नलिखित कार्यान्वयन गलत है?

{ [आवश्यक] सार्वजनिक बूल सक्षम {प्राप्त करें; तय करना; } [रेंज (1, 5)] सार्वजनिक int prop1 {प्राप्त करें; तय करना; } [रेंज (1, 5)] सार्वजनिक int prop2 {प्राप्त करें; तय करना; } सार्वजनिक ienumerable मान्य (सत्यापन { if (यह। enable) { // यहां वैध परिणाम लौटाएं। // यदि पूरी वस्तु "सक्षम" नहीं है, तो मुझे परवाह नहीं है कि क्या Prop1 और Prop2 दायरे से बाहर हैं } अन्य { // यहां जांचें कि क्या Prop1 और Prop2 उनके दायरे की आवश्यकताओं को पूरा करते हैं // और तदनुसार लौटें। } } }

उत्तर:

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 Validate(ValidationContext validationContext)
    {
        if (!this.Enable)
        {
            // 在此处返回有效结果。
            // 如果整个对象未“启用”,我不关心 Prop1 和 Prop2 是否超出范围
        }
        else
        {
            // 在此处检查 Prop1 和 Prop2 是否满足其范围要求
            // 并相应地返回。
        }
    }
}

] यदि सत्यापन सफल होता है, तो सफलता का संकेत देते हुए कुछ भी नहीं जोड़ा जाएगा। सत्यापन निष्पादित करें:

सार्वजनिक शून्य dovalidation () { var tovalidate = new ValidateMe () { सक्षम = सच, Prop1 = 1, Prop2 = 2 }; BOOL ValidateAllProperties = FALSE; var परिणाम = नई सूची (); बूल isvalid = सत्यापनकर्ता। tovalidate, नया सत्यापन परिणाम, LALIDATEALLPROPERTIES); }
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 Validate(ValidationContext validationContext)
    {
        var results = new List();
        if (this.Enable)
        {
            Validator.TryValidateProperty(this.Prop1,
                new ValidationContext(this, null, null) { MemberName = "Prop1" },
                results);
            Validator.TryValidateProperty(this.Prop2,
                new ValidationContext(this, null, null) { MemberName = "Prop2" },
                results);

            // 其他一些随机测试
            if (this.Prop1 > this.Prop2)
            {
                results.Add(new ValidationResult("Prop1 必须大于 Prop2"));
            }
        }
        return results;
    }
}
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3