2010-01-21 9 views
12

मैंने हाल ही में डेटा एन्नोटेशन के साथ एएसपी.NET एमवीसी का उपयोग किया था और फॉर्म प्रोजेक्ट के लिए एक ही दृष्टिकोण का उपयोग करने की सोच रहा था, लेकिन मुझे यकीन नहीं है कि इसके बारे में कैसे जाना है।विंडोज फॉर्म प्रोजेक्ट पर डेटा एनाटेशन का उपयोग

मैंने अपने गुण सेट किए हैं लेकिन जब मैं सहेजें पर क्लिक करता हूं तो वे चेक नहीं लगते हैं।

अद्यतन: मैं Steve Sanderson's approach का इस्तेमाल किया है जो मेरी कक्षा पर विशेषताओं के लिए जाँच और इतने की तरह त्रुटियों का संग्रह वापस आ जाएगी:

 try 
     { 
      Business b = new Business(); 
      b.Name = "feds"; 
      b.Description = "DFdsS"; 
      b.CategoryID = 1; 
      b.CountryID = 2; 
      b.EMail = "SSDF"; 
      var errors = DataAnnotationsValidationRunner.GetErrors(b); 
      if (errors.Any()) 
       throw new RulesException(errors); 

      b.Save(); 
     } 
     catch(Exception ex) 
     { 

     } 

आप इस दृष्टिकोण का क्या सोचते हैं?

उत्तर

6

स्टीव का उदाहरण थोड़ा दिनांकित है (हालांकि अभी भी अच्छा है)। DataAnnotationsValidationRunner जिसे वह सिस्टम द्वारा प्रतिस्थापित किया जा सकता है। कॉम्पोनेंट मॉडेल। डेटाएनोटेशन। वैलिडेटेटर क्लास, इसमें गुणों और ऑब्जेक्ट्स को सत्यापित करने के लिए स्थिर विधियां हैं जिन्हें डेटा एनाटेशन विशेषताओं से सजाया गया है।

+3

वहाँ नहीं है एमवीसी के बाहर इस 'वैलिडेटर' कक्षा का उपयोग करने के उदाहरणों का एक टन, तो शायद आप इसे इस तरह कुछ उपयोग करके कॉल करना चाहते हैं: 'var results = new list (); var success सफलता = Validator.TryValidateObject (चीज, नया सत्यापन कॉन्टेक्स्ट (चीज, शून्य, शून्य), परिणाम); ' –

+0

यह भी ध्यान दें कि यदि आप '[रेंज]' का उपयोग कर रहे हैं तो आपको 'परिणाम' के बाद 'सत्य' जोड़ना होगा 'TryValidateObject' विधि में। – Stephen

18

यहां एक साधारण उदाहरण है। मान लीजिए आप निम्नलिखित

using System.ComponentModel.DataAnnotations; 

public class Contact 
{ 
    [Required(AllowEmptyStrings = false, ErrorMessage = "First name is required")] 
    [StringLength(20, MinimumLength = 5, ErrorMessage = "First name must be between 5 and 20 characters")] 
    public string FirstName { get; set; } 

    public string LastName { get; set; } 

    [DataType(DataType.DateTime)] 
    public DateTime Birthday { get; set; } 
} 

की तरह एक वस्तु है और लगता है कि हम एक विधि है कि इस वर्ग का एक उदाहरण बनाता है और उसके गुणों को मान्य करने की कोशिश करता है, नीचे

private void DoSomething() 
    { 
     Contact contact = new Contact { FirstName = "Armin", LastName = "Zia", Birthday = new DateTime(1988, 04, 20) }; 

     ValidationContext context = new ValidationContext(contact, null, null); 
     IList<ValidationResult> errors = new List<ValidationResult>(); 

     if (!Validator.TryValidateObject(contact, context, errors,true)) 
     { 
      foreach (ValidationResult result in errors) 
       MessageBox.Show(result.ErrorMessage); 
     } 
     else 
      MessageBox.Show("Validated"); 
    } 

सूचीबद्ध के रूप में DataAnnotations नाम स्थान नहीं है एमवीसी ढांचे से बंधे ताकि आप इसे विभिन्न प्रकार के अनुप्रयोगों में उपयोग कर सकें। उपरोक्त कोड स्निपेट सत्य लौटाता है, सत्यापन त्रुटियों को प्राप्त करने के लिए संपत्ति मानों को अद्यतन करने का प्रयास करें।

और MSDN पर संदर्भ चेकआउट करने के लिए सुनिश्चित करें: DataAnnotations Namespace

0

आप इकाई की रूपरेखा के नवीनतम संस्करण का उपयोग करें यदि आप अपने त्रुटियों की एक सूची प्राप्त करने के लिए इस cmd उपयोग कर सकते हैं, तो मौजूदा:

YourDbContext.Entity(YourEntity).GetValidationResult(); 
संबंधित मुद्दे