2011-03-06 21 views
7

मेरे पास एक बहुत बड़ा 60+ प्रश्न फ़ॉर्म है जिसे उपयोगकर्ता भरने, किसी भी समय सहेजने और इसे रोक में छोड़ना शुरू कर सकता है। फॉर्म को डेटाबेस से पुनः लोड किया जा सकता है और किसी भी समय पूरा किया जा सकता है और फिर इसे बंद कर दिया जा सकता है।एएसपी.नेट एमवीसी 3 मॉडल का आंशिक सत्यापन

मैं निम्नलिखित मॉडल है:

public class Questionnaire{ 

    [Required] 
    public string Question1 { get; set; } 

    [Required] 
    [Range(1, 10)] 
    public int Quesiton2 { get; set; } 

    public string Question3 {get;set} 
} 

मैं आंशिक रूप से अपने मॉडल को मान्य करने के लिए जब उपयोगकर्ता प्रपत्र बचाने के लिए और जब उपयोगकर्ता बंद करने के लिए चुना है के लिए आवश्यक फ़ील्ड के सत्यापन सहित एक पूर्ण सत्यापन प्रदर्शन करने का फैसला करता है की जरूरत है फार्म।

इसे लागू करने का सबसे अच्छा तरीका क्या है?

उत्तर

2

यह वास्तव में आपके प्रश्न/उदाहरण से बिल्कुल स्पष्ट नहीं है, लेकिन मुझे आमतौर पर यह पता चला है कि एमवीसी में मेरे व्यू मॉडल को विभाजित करना इस तरह की चीज़ों से संपर्क करने का सबसे अच्छा तरीका है।

i.e. अपनी इकाई को भागों में विभाजित करें, जिनमें से प्रत्येक को स्वयं ही सत्यापित किया जा सकता है।

फिर इनमें से प्रत्येक के लिए UI घटक प्रदान करने के लिए आंशिक दृश्य/कस्टम संपादक टेम्पलेट का उपयोग करें।

फिर आवश्यकतानुसार आप इन घटकों को एक रूप में जोड़ सकते हैं, या आवश्यक पृष्ठ पर एक ही पृष्ठ, बहु पृष्ठ जादूगर, या एकल पृष्ठ प्रगतिशील AJAX विज़ार्ड, या जो कुछ भी आप चाहते हैं) प्रदान कर सकते हैं।

चीजें शुष्क और सरल रखती है।

कुंजी देखें मॉडल जब जरूरत, की अतिरिक्त परत अपने यूआई की आवश्यकताओं के साथ कतार में अपने डेटा वस्तुओं लाने के लिए जोड़ने के लिए डर नहीं हो रहा है।

जब आप विशेष रूप से उनसे मुक्त होने की आवश्यकता होती है तो अपने व्यापार वस्तुओं/संस्थाओं द्वारा बाध्य न हों - घटक से एक व्यापार वस्तु के हिस्सों को एक साथ वापस रखना आसान है टुकड़े देखें।

0

आपके पास दो अलग-अलग कार्रवाइयां सहेजें() और सबमिट() हो सकती हैं और सहेजें() पर सत्यापन (या न्यूनतम सत्यापन) अक्षम कर सकती हैं।

+0

यही मुझे दिमाग में था, सहेजें() एक्शन में मैं ModelState.IsValid का उपयोग करूंगा लेकिन मुझे सबमिट() एक्शन सत्यापन को कैसे कार्यान्वित करना चाहिए? मैं सभी खाली [आवश्यक] विशेषताओं को खाली खाली फ़ील्ड पर मान्य करना चाहता हूं – Marc

1

आप प्रश्न 1 का उपयोग क्यों कर रहे हैं .. प्रश्न .. 1 प्रश्न प्रति वस्तु, क्या होगा यदि आप एक नया प्रश्न जोड़ते हैं? ... आपके पास एक प्रश्न सूची होनी चाहिए, और फिर, अपने व्यापार नियमों को दर्ज करने से पहले मैन्युअल रूप से सत्यापित करें।

0

बाला आर के विचार से निम्नलिखित, आप जिस क्रिया को कर रहे हैं, सहेज रहे हैं या सबमिट कर रहे हैं, उसके आधार पर सशर्त सत्यापन करना सर्वोत्तम होगा। इसका मतलब है, सहेजने पर, केवल फ़ील्ड में डेटा को सत्यापित करें, इसलिए नल/खाली/डिफ़ॉल्ट के लिए जांचें और उन फ़ील्ड को मान्य न करें, लेकिन उन लोगों के लिए व्यवसाय तर्क/मॉडल नियमों के अनुसार फ़ील्ड को मान्य करें घुसा।

तो, कहें कि आपके पास नाम, आयु और लिंग के साथ एक फॉर्म है, प्रयास 1 पर, उपयोगकर्ता '1234' के रूप में अपना नाम भरता है, उम्र 12 'के रूप में' और 'सेक्स' खाली छोड़ देता है, जब आप सहेजते हैं, तो आप प्रत्येक नियंत्रण के माध्यम से लूप की आवश्यकता है और जिनके मूल्य हैं, इस मामले में, नाम और आयु, तो आप नाम सत्यापित कर सकते हैं और रिपोर्ट कर सकते हैं कि '1234' मान्य नाम नहीं है, लेकिन उम्र 12 के रूप में स्वीकार करें।

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

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