2010-05-04 9 views
8

एमवीसी 2 का उपयोग करके, मेरे पास एक साधारण व्यूमोडेल है जिसमें एक बूल फ़ील्ड होता है जिसे दृश्य में चेकबॉक्स के रूप में प्रस्तुत किया जाता है। मैं यह सत्यापित करना चाहता हूं कि उपयोगकर्ता ने बॉक्स को चेक किया है। मेरे व्यूमोडेल पर [आवश्यक] विशेषता चाल नहीं लगती है। मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि अनचेक चेकबॉक्स फॉर्म फ़ील्ड वास्तव में POST के दौरान प्रेषित नहीं होता है, और इसलिए सत्यापन उस पर नहीं चलता है।आप ASP.Net MVC 2 में चेकबॉक्स को कैसे सत्यापित करेंगे?

क्या एमवीसी 2 में चेकबॉक्स "आवश्यक" सत्यापन को संभालने का एक मानक तरीका है? या मुझे इसके लिए एक कस्टम सत्यापनकर्ता लिखना है? मुझे संदेह है कि कस्टम सत्यापनकर्ता ऊपर वर्णित कारण के लिए निष्पादित नहीं होगा। क्या मैं इसके लिए अपने नियंत्रक में स्पष्ट रूप से जांच कर रहा हूं? यह गन्दा लगता है ...

किसी भी मार्गदर्शन की सराहना की जाएगी।

स्कॉट

संपादित स्पष्टता के लिए: मैं वास्तव में देख रहा हूँ के रूप में नीचे टिप्पणी में बताया, इस चेकबॉक्स का एक "हमारे शर्तों से सहमत" प्रकार है, और इसलिए "चेक न" एक मान्य जवाब है, तो "चेक किया गया" सत्यापन के लिए।

+1

क्या यह "मैं लाइसेंस समझौते की शर्तों को स्वीकार करता हूं" चेकबॉक्स का प्रकार है? [आवश्यक] विशेषता काम नहीं करती है क्योंकि एक अनचेक चेकबॉक्स मान्य मान (झूठा) है। –

+0

हां, यह बिल्कुल ठीक है, और यदि वे इसे नहीं देखते हैं, तो हम एक सत्यापन संदेश के साथ एक ही दृश्य को फिर से चला रहे हैं कि आपको जारी रखने के लिए शर्तों को स्वीकार करना होगा। मैं झूठ के बारे में आपका मुद्दा "वैध" होने के बावजूद देखता हूं। –

+0

यहां उत्तर देने का एक अच्छा तरीका है जो क्लाइंट सत्यापनकर्ताओं के साथ काम करता है: [http://stackoverflow.com/questions/4934032/mvc3-make-checkbox-required-via-jquery-validate ](http:// stackoverflow.com/questions/4934032/mvc3-make-checkbox-required-via-jquery- validate) –

उत्तर

13

एक कस्टम सत्यापनकर्ता जाने का रास्ता है। मैं अपने कोड जो मैं मान्य करने के लिए है कि उपयोगकर्ता शर्तों को स्वीकार इस्तेमाल किया ...

public class BooleanRequiredToBeTrueAttribute : RequiredAttribute 
{ 
    public override bool IsValid(object value) 
    { 
     return value != null && (bool)value; 
    } 
} 
+0

क्या यह क्लाइंट पक्ष को मान्य करता है? – jrummell

+0

स्वचालित रूप से मुझे नहीं पता है। क्लाइंट साइड सत्यापन बनाने के लिए आपको कस्टम सत्यापन के लिए एक वैधकर्ता बनाना होगा। यह कैसे लागू करने के लिए पर जानकारी के लिए लिंक निम्न देखें: http://www.highoncoding.com/Articles/729_Creating_Custom_Client_Side_Validation_in_ASP_NET_MVC_2_0.aspx हालांकि मैं बदलाव करने के लिए किया था आप, कस्टम सत्यापन – SQueek

0

पोस्ट करेंगे मैं भी एक तरह से मॉडल बांधने की मशीन सही ढंग से किया है संभाल बूलियन मूल्यों के साथ बॉक्स की जाँच करने के लिए देख रहा हूँ। मतलब समय में मैं क्रिया में यह उपयोग कर रहा हूँ:

Object.Property = !String.IsNullOrEmpty(Request.Form["NAME"]); 

हो सकता है कि यह आप के लिए कुछ फायदा नहीं होगा।

12

मैं आमतौर पर उपयोग करें:

[RegularExpression("true")] 
+2

मैं यह पसंद के लिए एक DataAnnotationsModelValidator बनाने के लिए यह यह है: '[RegularExpression ("true | True")]' यह मेरे लिए काम करने के लिए। (मैं एमवीसी 3 का उपयोग कर रहा हूं, अगर इससे कोई फर्क पड़ता है?) – Merenzo

+0

क्या यह आपको क्लाइंट साइड सत्यापन भी देता है? सर्वर पक्ष सही ढंग से मिला है – Shekhar

6

आप अपने स्वयं के कस्टम सत्यापनकर्ता बनाने के लिए और नहीं करना चाहता था, तो अभी भी मॉडल में मौजूदा विशेषताओं का उपयोग करने के इस्तेमाल कर सकते हैं चाहता था:

[Range(typeof(bool), "true", "true", ErrorMessage="You must accept the terms and conditions.")] 

यह सुनिश्चित करता है कि बुलियन मूल्य की सीमा सत्य और सत्य के बीच है। हालांकि, जब यह विधि काम करेगी, तब भी मैं इस परिदृश्य में एक कस्टम सत्यापनकर्ता का उपयोग करना पसंद करूंगा। मैंने सोचा कि मैं इसे वैकल्पिक विकल्प के रूप में उल्लेख करूंगा।

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