में कस्टम सत्यापन विशेषता से सदस्य नाम सेट करने में असमर्थ I ValidationAttribute subclassing द्वारा एक कस्टम सत्यापन विशेषता बनाई है। विशेषता वर्ग के स्तर पर मेरे व्यूमोडेल पर लागू होती है क्योंकि इसे एक से अधिक संपत्तियों को सत्यापित करने की आवश्यकता होती है।एमवीसी 2
मैं
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
अधिभावी कर रहा हूँ और लौटने:
new ValidationResult("Always Fail", new List<string> { "DateOfBirth" });
सभी मामलों में जहां DateOfBirth मेरे विचार मॉडल पर संपत्ति में से एक है में
।
जब मैं अपना आवेदन चलाता हूं, तो मैं इसे हिट कर देख सकता हूं। ModelState.IsValid सही ढंग से गलत पर सेट है लेकिन जब मैं मॉडलस्टेट सामग्री का निरीक्षण करता हूं, तो मुझे लगता है कि संपत्ति दिनांकऑफबर्थ में कोई त्रुटि नहीं है। इसके बजाय मेरे पास शून्य के मान के साथ एक खाली स्ट्रिंग कुंजी है और एक अपवाद है जिसमें मैंने अपनी सत्यापन विशेषता में निर्दिष्ट स्ट्रिंग है।
इसके परिणामस्वरूप ValidationMessageFor का उपयोग करते समय मेरे UI में कोई त्रुटि संदेश प्रदर्शित नहीं किया जा रहा है। अगर मैं प्रमाणीकरणसमरी का उपयोग करता हूं, तो मैं त्रुटि देख सकता हूं। ऐसा इसलिए है क्योंकि यह किसी संपत्ति से जुड़ा नहीं है।
ऐसा लगता है कि यह इस तथ्य को अनदेखा कर रहा है कि मैंने सत्यापन परिणाम में सदस्य नाम निर्दिष्ट किया है।
यह क्यों है और मैं इसे कैसे ठीक करूं?
उदाहरण कोड के रूप में अनुरोध:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = true)]
public class ExampleValidationAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
// note that I will be doing complex validation of multiple properties when complete so this is why it is a class level attribute
return new ValidationResult("Always Fail", new List<string> { "DateOfBirth" });
}
}
[ExampleValidation]
public class ExampleViewModel
{
public string DateOfBirth { get; set; }
}
धन्यवाद करने में मदद कर सकता है। तो एमवीसी टीम ValidationResult कक्षा का पुन: उपयोग कर रही है लेकिन संपत्तियों में से एक को पूरी तरह से अनदेखा कर रही है? पूरी तरह से मैं एमवीसी टीम के आउटपुट से बेहद प्रभावित हूं लेकिन यह बहुत खराब है। मैंने इसे अभी एमवीसी 3/.NET4 में चेक किया है और यह अभी भी वही है। –