2012-08-30 13 views
6

डेटा एनीमेशन का उपयोग करते हुए एएसपी.नेट एमवीसी 4 में जटिल कक्षाओं के सत्यापन के साथ एक मुद्दे पर आया।एएसपी.नेट एमवीसी 4 में जटिल कक्षाओं का सत्यापन

चलो एक निम्नलिखित मॉडल है (सरलीकृत)

public class Customer 
{ 
    [Required] 
    [StringLength(8, MinimumLength = 3)]   
    public string UserName { get; set; } 

    [Required] 
    [StringLength(8, MinimumLength = 3)] 
    public string DisplayName { get; set; } 
} 


public class Order 
{ 
    public Customer customer { get; set; } 
} 

तब मैं अपने नियंत्रक में इस मॉडल का एक उदाहरण मान्य करने के लिए प्रयास करें:

// CREATE A DUMMY INSTANCE OF THE MODEL 
Customer cust = new Customer(); 
cust.UserName = "x"; 
cust.DisplayName = "x"; 

Order orderModel = new Order(); 
orderModel.customer = cust; 

// VALIDATE MODEL 
TryValidateModel(orderModel); // ModelState.IsValid is TRUE (which is incorrect) 
TryValidateModel(cust); // ModelState.IsValid is FALSE (whic is correct} 

orderModel का सत्यापन cust.UserName के रूप में विफल मॉडल में केवल 1 वर्ण है, लेकिन 3 मॉडल की आवश्यकता है। ग्राहक पर लागू होता है। प्रदर्शन नाम। लेकिन जब मैं एक शुद्ध ग्राहक वर्ग को मान्य करता हूं तो यह अपेक्षा के अनुसार विफल रहता है।

कोई विचार क्या गलत है?

धन्यवाद

जिरी

+1

जहाँ तक के साथ सजाया सरल गुणों के साथ आबादी वाले के साथ एक दृश्य मॉडल मैं जैसा कि आप जानते बनाएं उस तरह नेस्टेड ऑब्जेक्ट्स को मान्य नहीं कर सकते हैं, शायद एक कस्टम सत्यापनकर्ता – saj

+1

का उपयोग करें ऐसा लगता है कि डेटा एनोटेशन सत्यापन डिफ़ॉल्ट रूप से नेस्टेड ऑब्जेक्ट्स के सत्यापन को नहीं चलाता है। सिममिलर यहां पोस्ट करें http://stackoverflow.com/questions/2493800/how-can-i-tell-the-data-annotations- validator-to-also-validate-complex-child-pro –

उत्तर

2

DataAnnotations अपने आप पर अपनी वस्तुओं में खुदाई नहीं होंगे। आपके पास दो विकल्प:

1 - बच्चे गुण

जाँच करने के लिए एक कस्टम सत्यापनकर्ता लिखें

2 - डेटा एनोटेशन

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