का उपयोग कर निर्भर गुणों का कस्टम मॉडल सत्यापन अब से मैंने अपने मॉडल वर्गों को सत्यापित करने के लिए उत्कृष्ट FluentValidation लाइब्रेरी का उपयोग किया है। वेब अनुप्रयोगों में मैं इसे क्लाइंट साइड सत्यापन करने के लिए jquery.validate प्लगइन के साथ संयोजन के रूप में भी उपयोग करता हूं। एक दोष यह है कि क्लाइंट पक्ष पर अधिकांश सत्यापन तर्क दोहराया जाता है और अब एक ही स्थान पर केंद्रीकृत नहीं किया जाता है।डेटा एनोटेशन
इसी कारण से मैं एक विकल्प तलाश रहा हूं। many उदाहरण हैं there मॉडल सत्यापन करने के लिए डेटा एनोटेशन का उपयोग दिखा रहा है। यह बहुत आशाजनक लग रहा है। एक चीज़ जो मुझे नहीं मिल सका वह एक संपत्ति को मान्य करने का तरीका है जो किसी अन्य संपत्ति मूल्य पर निर्भर करता है।
के उदाहरण के लिए निम्नलिखित मॉडल लेते हैं:
public class Event
{
[Required]
public DateTime? StartDate { get; set; }
[Required]
public DateTime? EndDate { get; set; }
}
मैं यह सुनिश्चित करें कि EndDate
StartDate
से अधिक है चाहते हैं। मैं कस्टम सत्यापन तर्क करने के लिए ValidationAttribute को विस्तारित सत्यापन विशेषता लिख सकता हूं।
public class CustomValidationAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
// value represents the property value on which this attribute is applied
// but how to obtain the object instance to which this property belongs?
return true;
}
}
मैंने पाया कि CustomValidationAttribute क्योंकि यह इस ValidationContext
प्रॉपर्टी वाला है कि वस्तु उदाहरण सत्यापित किया जा रहा है काम करने के लिए लगता है: दुर्भाग्य से मैं एक तरह से मॉडल उदाहरण प्राप्त करने के लिए नहीं मिल सका। दुर्भाग्यवश यह विशेषता केवल .NET 4.0 में जोड़ दी गई है। तो मेरा सवाल है: क्या मैं .NET 3.5 SP1 में समान कार्यक्षमता प्राप्त कर सकता हूं?
अद्यतन:
ऐसा लगता है कि FluentValidation already supports clientside सत्यापन और ASP.NET MVC में मेटाडाटा 2.
फिर भी यह पता करने के लिए अच्छा होगा, हालांकि डेटा एनोटेशन निर्भर गुण मान्य करने के लिए इस्तेमाल किया जा सकता है, तो ।
क्या आपने या किसी भी वर्ग/मॉडल पर डेटावोटेशन और फ़्लुएंट वैलिडेशन (सत्यापन के लिए) काम करने के लिए कोई तरीका निकाला है? यदि ऐसा है तो यह शानदार होगा, मेरे पास एफवी लेखक जेरेमी के साथ चर्चा करने के बारे में एक धागा है, आप यहां देख सकते हैं: http://fluentvalidation.codeplex.com/Thread/View.aspx?Tread_d=212371 –