2013-02-20 10 views
7

तो जैसे तीन गुणों के साथ एक सरल ViewModel है है:bool संपत्ति आवश्यक

public bool RememberMe { get; set; } 

मेरी नजर में मैं एक साधारण @Html.CheckBoxFor(p => p.RememberMe) मैं उपयोग कर रहा हूँ क्लाइंट साइड सत्यापन Html.EnableClientValidation();

क्यों का उपयोग कर सक्षम है क्या यह एक आवश्यक क्षेत्र के रूप में स्थापित किया जा रहा है?

+0

यह किसी पुराने ब्राउज़र में इस बग से संबंधित नहीं है? https://github.com/jzaefferer/jquery-validation/issues/598 –

+0

आप संपत्ति के लिए या तो 'बूल?' का उपयोग कर सकते हैं या एक छिपी हुई इनपुट का उपयोग कर सकते हैं (<इनपुट प्रकार = "छुपा" नाम = "याद रखें" />) –

उत्तर

8

एक नालीदार बूल आज़माएं।

public bool? RememberMe { get; set; } 

संदर्भ प्रकारों के साथ कई डिफ़ॉल्ट सत्यापन नियम लागू होते हैं। यदि कोई संदर्भ प्रकार शून्य नहीं है, तो यह डिफ़ॉल्ट रूप से आवश्यक हो जाता है।

मॉडल::

public bool? MyBool { get; set; } 
public int MyInt { get; set; } 

दृश्य:

इस का सबसे अच्छा उदाहरण अगर आप कुछ गुण (कुछ नहीं आप अपनी साइट में क्या होगा, लेकिन अच्छा परीक्षण प्रयोजनों के लिए) प्रदर्शित करने के लिए एक पाठ बॉक्स का उपयोग करें
@Html.TextBoxFor(p => p.MyBool) 
@Html.TextBoxFor(p => p.MyInt) 

आप क्या पेज पर होता है एक दृश्य के स्रोत से देख सकते हैं:

<input id="MyNullBool" name="MyNullBool" type="text" value=""> 
<input data-val="true" data-val-required="The MyBool field is required." id="MyBool" name="MyBool" type="text" value="False"> 
<input data-val="true" data-val-number="The field MyInt must be a number." data-val-required="The MyInt field is required." id="MyInt" name="MyInt" type="text" value="0"> 

नुल लेलबल बूल में कोई सत्यापन विशेषता नहीं है, जबकि बूल में data-val-required टैग है। पूर्णांक एक data-val-required टैग और एक data-val-number विशेषता

बेशक

, यह सब बहुत बेमानी है एक चेकबॉक्स पर के रूप में यह केवल जाँच की जा सकती (सही) या जाँच नहीं की (गलत) तो कोई आवश्यक टैग ज्यादा उपयोग नहीं है।

+0

यह भी ध्यान रखें कि एमवीसी वापस पोस्ट किए जाने पर मॉडल को मान्य करेगा ताकि अगर आप कुछ ऐसा डाल दें जो टेक्स्टबॉक्स में बूल से बंधे नहीं हो सकता है, तो ModelState.IsValid गलत होगा और मॉडलस्टेट त्रुटि होगी। –

+0

दिलचस्प लेकिन मुझे लगता है कि यह अब समझ में आता है। मैंने आपके उदाहरण में देखा है कि आप Html.CheckBoxFor के बजाय इनपुट प्रकार टेक्स्ट का उपयोग कर रहे हैं; क्या इसका मतलब यह है कि चेकबॉक्स सहायक बेकार है? – Victor

+0

मैं उदाहरण स्पष्ट करने के लिए सिर्फ एक इनपुट का उपयोग कर रहा था। :-) –

-2
@Html.CheckBoxFor(c => c.TermsAndConditions, new { required = "required" }) 
@Html.ValidationMessageFor(c => c.TermsAndConditions, "you must agree to terms and conditions of Service.)" 
संबंधित मुद्दे