2014-09-30 9 views
10

मैं एक मॉडल वर्ग की तरह है:एमवीसी में बूलियन आवश्यक विशेषता कैसे जोड़ें?

public class Student 
{ 
    [DataType(DataType.Date)] 
    [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] 
    [Display(Name = "Enrollment Date")] 
    public DateTime EnrollmentDate { get; set; } 

    [Required] 
    [Display(Name = "Is Active")] 
    public bool IsActive { get; set; } 

    public virtual ICollection<Enrollment> Enrollments { get; set; } 
} 

यहाँ मैं एक Boolean संपत्ति IsActiveRequired विशेषता के साथ बनाया है, लेकिन समस्या यह है कि मेरे विचार इस संपत्ति के लिए आवश्यक सत्यापन से कार्यान्वित नहीं हो रहा है? मैं इस संपत्ति को CheckBox से बांधना चाहता हूं और जांच सकता हूं कि यह CheckBox चेक किया गया है और यदि यह नहीं है तो सत्यापन चलाएं।

इसके लिए कोई समाधान?

+2

मत सोचो आप आवश्यक के साथ यह कर सकते हैं का आनंद लें। यहाँ एक नज़र डालें इससे मदद मिल सकती है http://www.jasonwatmore.com/post/2013/10/16/ASPNET-MVC- आवश्यक- चेकबॉक्स-with- डेटा-Annotations.aspx – mjroodt

+0

'आवश्यक' विशेषता का अर्थ है कि संपत्ति के पास होना चाहिए एक कीमत। बुलियन (चेकबॉक्स) के मामले में मूल्य गलत (या अनचेक) अभी भी एक वैध उत्तर है। – DavidG

+0

संभावित डुप्लिकेट [डेटा एनोटेशन का उपयोग करके एक मॉडल के बूलियन मान को सही करने के लिए लागू करना] [http://stackoverflow.com/questions/6986928/enforcing-a-models-boolean-value-to-be-true-using-data- एनोटेशन) – DavidG

उत्तर

21
[Display(Name = "Is Active")] 
[Range(typeof(bool), "true", "true", ErrorMessage="The field Is Active must be checked.")] 
public bool IsActive { get; set; } 
+3

धन्यवाद, यह अच्छी तरह से काम किया। एक अलग सत्यापन विधि बनाने से बचने के लिए दिलचस्प कामकाज। – sukotto1

6

उपर्युक्त समाधान के लिए धन्यवाद, जो मुझे सही दिशा में रखता है, लेकिन मेरे लिए यह अच्छी तरह से काम नहीं करता है। मुझे पृष्ठ पर नीचे लिपि जोड़ने की आवश्यकता है जो ऊपर समाधान समाधान प्राप्त करने के लिए jquery validator को बढ़ाता है। अगर किसी को भी इसी तरह के मुद्दे में चलाया जाता है तो इसे साझा करने का विचार।

<script> 
     // extend jquery range validator to work for required checkboxes 
     var defaultRangeValidator = $.validator.methods.range; 
     $.validator.methods.range = function(value, element, param) { 
      if(element.type === 'checkbox') { 
       // if it's a checkbox return true if it is checked 
       return element.checked; 
      } else { 
       // otherwise run the default validation function 
       return defaultRangeValidator.call(this, value, element, param); 
      } 
     } 
</script> 
0

मुझे Sonu K पद

एक छोटे से जोड़ने आप इसे (<input type="checkbox" required/>) पर HTML सत्यापन का उपयोग करते हैं चलो यह रोक से अपने जावास्क्रिप्ट में बाधा पहुँचा अंत अपने मॉडल

से सेट एक खाली आवश्यक फ़ील्ड प्रस्तुत करने के लिए हो सकता है

अंत में, अगर आप नहीं चाहते Is Active माइग्रेशन कर डेटाबेस के लिए जोड़ा जा करने के लिए (कोड पहले) बस जोड़ने [NotMapped]

पूर्ण कोड

[NotMapped] 
[Display(Name = "Is Active")] 
[Range(typeof(bool), "true", "true", ErrorMessage="The field Is Active must be checked.")] 
public bool IsActive { get; set; } 

क्योंकि यह MVC में सेट किया जाता है के रूप में सच के बावजूद यह ब्राउज़र पर सही का निशान प्रदर्शित करेगा, तो मान्यता आप इसे करने की उम्मीद के रूप में काम नहीं कर सकते, वह यह है कि तुम क्यों पूर्ण करने के लिए इस जावास्क्रिप्ट कोड जोड़ने के लिए सत्यापन

<script> 
      // extend jquery range validator to work for required checkboxes 
      var defaultRangeValidator = $.validator.methods.range; 
      $.validator.methods.range = function(value, element, param) { 
       if(element.type === 'checkbox') { 
        // if it's a checkbox return true if it is checked 
        return element.checked; 
       } else { 
        // otherwise run the default validation function 
        return defaultRangeValidator.call(this, value, element, param); 
       } 
      } 
     </script> 

कोडिंग

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