सवाल:
] हालांकि, मैं एकल संपत्ति को मान्य करने के लिए गुणों का उपयोग करना चाहता हूं और कुछ परिदृश्यों में जो विशिष्ट गुणों को अनदेखा करते हैं। क्या मेरा निम्नलिखित कार्यान्वयन गलत है?
{
[आवश्यक]
सार्वजनिक बूल सक्षम {प्राप्त करें; तय करना; }
[रेंज (1, 5)]
सार्वजनिक int prop1 {प्राप्त करें; तय करना; }
[रेंज (1, 5)]
सार्वजनिक int prop2 {प्राप्त करें; तय करना; }
सार्वजनिक ienumerable
उत्तर:
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 परिणाम = नई सूची
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