5

मैं फ़्लुएंट सत्यापन के लिए अविभाज्य कस्टम सत्यापन को लागू करने का एक तरीका ढूंढ रहा हूं। documentation के अनुसार, ऐसा लगता है कि यह अविभाज्य सत्यापन का समर्थन करता है।फ़्लुएंट सत्यापन के साथ अविभाज्य कस्टम/सशर्त सत्यापन

सशर्त सत्यापन (When/Unless) का उपयोग करने पर भी लागू होता है। मैं उनके MVC documentation, विनीत सत्यापन में देख सशर्त और अन्य जटिल मान्यता के साथ समर्थित नहीं है:

ध्यान दें कि FluentValidation भी ASP.NET MVC का क्लाइंट-साइड मान्यता के साथ काम करेंगे, लेकिन सभी नियमों का समर्थन नहीं करता। उदाहरण के लिए, किसी शर्त (जब/जब तक) के साथ परिभाषित परिभाषित नियम, कस्टम वैधकर्ता, या कॉल करने के लिए कॉल क्लाइंट पक्ष पर नहीं चलेंगे। निम्नलिखित प्रमाणकों के ग्राहक पर समर्थित हैं:

* NotNull/NotEmpty
* मेल खाता है (regex)
* InclusiveBetween (रेंज)
* क्रेडिटकार्ड
* ईमेल
* EqualTo (क्रॉस-संपत्ति समानता तुलना)
* लंबाई

तो किसी को पता लगा कि कैसे इस काम करने के लिए प्राप्त करने के लिए है? यदि नहीं, तो क्या अन्य सत्यापन विकल्प हैं जो अविभाज्य कस्टम/जटिल सत्यापन के लिए बेहतर समर्थन प्रदान करते हैं?

+0

क्या आप जो हासिल करने/सत्यापन करने की कोशिश कर रहे हैं उसका एक ठोस उदाहरण प्रदान कर सकते हैं? आपका सटीक परिदृश्य क्या है? –

+0

ठीक है, बस जब भी/अनलेस विधियों का उपयोग करके बॉक्स से बाहर, अविभाज्य रूप से काम नहीं करते हैं।यहां तक ​​कि अगर मैं उन समाधानों को ढूंढ सकता हूं जो उन लोगों के लिए काम करते हैं, तो इससे मुझे एक कदम करीब मिल जाएगा। शायद, अगर यह डब्ल्यू/सशर्त जैसे काम करता है जैसे/जब तक, यह शायद w/कस्टम सत्यापन भी काम करेगा। –

उत्तर

1

मैंने Integration with ASP.NET MVC दस्तावेज़ों का पालन करके FluentValidation को ASP.NET MVC 3 में सफलतापूर्वक प्लग किया है।

आसान तरीका Global.asax Application_Start() इस तरह में MVC मान्यकरण ढांचे में FluentValidation प्लग करने के लिए है:

FluentValidationModelValidatorProvider.Configure(); 

तो फिर तुम सत्यापनकर्ता वे का उपयोग निर्दिष्ट करने विशेषता के साथ अपने POCO कक्षाओं को सजाने कर सकते हैं।

[Validator(typeof(PersonValidator))] 
public class Person { 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Email { get; set; } 
    public int Age { get; set; } 
} 

मेरे मामले में, मैं ऐसा करने के लिए (प्रयोग का श्रेय) नहीं करना चाहता था, और वास्तव में व्यापार के नियम के आधार पर भिन्न प्रमाणकों के खिलाफ एक ही POCO वर्ग को मान्य करने, जरूरत है।

यदि आप इस तरह के विभिन्न वैधताओं का चयन करना चाहते हैं, तो "custom validator factory with an IoC container" पर दस्तावेज़ों का पालन करें। एक वर्ग FluentMvcValidatorFactory subclassing ValidatorFactoryBase बनाएँ, जो इंटरफ़ेस IValidatorFactory लागू करता है। कस्टम सत्यापनकर्ता कारखाने उचित सत्यापनकर्ता का चयन कर सकते हैं।

मैं क्लाइंट साइड सत्यापन काम करने की कोशिश कर रहा था (ऐसा किया), लेकिन ऐसा लगता है कि यह अविभाज्य सत्यापन में भी प्लग है।

<input type="text" value="" name="Email" id="Email" data-val-length-max="128" data-val-length="&amp;#39;Email&amp;#39; must be between 0 and 128 characters." data-val-email="&amp;#39;Email&amp;#39; is not a valid email address." data-val="true" class="text-box single-line"> 

जब तक आप सही ढंग से MVC में प्लग के रूप में, मैं विनीत काम करना चाहिए लगता है: मेरी एचटीएमएल उत्पादन इस तरह लग रही है।

अभ्यास में, आपको पूरी तरह से क्लाइंट-साइड या अविभाज्य सत्यापन पर निर्भर नहीं होना चाहिए, केवल इनपुट के दौरान उपयोगकर्ता की सहायता के लिए इसका उपयोग करें। आखिर में सर्वर को सत्यापित करने की आवश्यकता है, लेकिन आप अपने सर्वर-साइड कोड को उसी फ़्लुएंट सत्यापन सत्यापनकर्ताओं का उपयोग कर सकते हैं।

+1

आपकी पोस्ट के लिए धन्यवाद। मेरे पास वास्तव में मानक प्रमाणीकरण काम नहीं कर रहा है, समस्या तब होती है जब काम करने के लिए सशर्त सत्यापन, या कस्टम सत्यापन (जहां मैं अपना स्वयं का सत्यापन नियम बनाता हूं)। –

+0

मुझे लगता है - तो आप FluentValidation का उपयोग कर कस्टम सत्यापन नियम (सशर्त) को परिभाषित करना चाहते हैं, और क्लाइंट साइड सत्यापन के लिए उन नियमों को कस्टम jquery.unobtrusive.validation नियमों में परिवर्तित कर दिया है? यही वह समर्थित नहीं है। तो यह अंतर को पुल करने के लिए एक कस्टम कोड ले जाएगा। क्लाइंट पक्ष पर कस्टम नियम होना कितना महत्वपूर्ण है, सर्वर पोस्ट के साथ नहीं? शायद यह अधिक है। FluentValidation का उपयोग करने का कारण यह है कि आप कम कोड लिखते हैं - क्लाइंट और सर्वर पर एक ही सत्यापन नियम। –

+1

मैं सहमत हूं। लेकिन ऐसे कई मामले हैं जब कुछ क्षेत्रों में कुछ क्षेत्रों में सत्यापन की आवश्यकता होती है (यानी "बिलिंग के समान" चेकबॉक्स चेक नहीं होने पर शिपिंग पता फ़ील्ड की आवश्यकता होती है)। मेरे लिए, यह एक सामान्य आवश्यकता की तरह प्रतीत होता है, और जैसा कि आपने कहा था, मैं इसके लिए अलग सत्यापन लिखना नहीं चाहता क्योंकि अवांछित सत्यापन इनके लिए/जब तक सशर्त नहीं है। –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^