कार्यशीलता का एक बहुत कम स्तर offeres। यह प्रदान नहीं करता है, न ही एक सच्चे 'उप-नियंत्रक' मॉडल प्रदान करने का प्रयास करता है *।ModelFactory हल करने के लिए 'RenderPartial' मुद्दा
मेरे पास 'रेंडरपार्टियल()' के माध्यम से बढ़ते नियंत्रणों की संख्या बढ़ रही है।
जिस तरह से1) नियंत्रण है कि एक विशेष पेज के प्रत्यक्ष वंश कि कि पेज के मॉडल का उपयोग
2) नियंत्रण है कि एक विशेष पृष्ठ कि उपयोग की प्रत्यक्ष वंशज हैं कर रहे हैं: वे 3 मुख्य श्रेणियों में आते उस पृष्ठ का मॉडल additional key of some type के साथ। 'डेटा रिपेटर' के कार्यान्वयन को सोचें।
3) पृष्ठ पर असंबद्ध कार्यक्षमता का प्रतिनिधित्व करने वाले नियंत्रण पर दिखाई देते हैं। यह बैनर रोटेटर से फीडबैक फॉर्म, स्टोर लोकेटर, मेलिंग सूची साइनअप से कुछ भी हो सकता है। कुंजी बिंदु यह परवाह नहीं करता है कि यह किस पृष्ठ पर रखा जाता है।
ViewData
मॉडल वहाँ काम करता है की
केवल प्रति अनुरोध एक मॉडल वस्तु मौजूद है - thats कुछ भी subcontrols जरूरत पेज मॉडल में मौजूद होना चाहिए कहने के लिए।
अंततः MVC टीम उम्मीद है कि एक सच्चे 'subcontroller' मॉडल के साथ बाहर आ जाएगा, लेकिन तब तक मैं सिर्फ मुख्य पृष्ठ मॉडल है कि बच्चे भी नियंत्रित होता है की जरूरत के लिए कुछ भी जोड़ रहा।
की (3) के ऊपर इस 'ProductModel' के लिए अपने मॉडल का अर्थ है 'MailingListSignup' मॉडल के लिए एक क्षेत्र को शामिल करने के लिए हो सकता है मामले में। जाहिर है कि यह आदर्श नहीं है, लेकिन मैंने इसे वर्तमान ढांचे के साथ सबसे अच्छे समझौते पर स्वीकार कर लिया है - और भविष्य में उप-नियंत्रक मॉडल के लिए 'किसी भी दरवाजे को बंद करने' की संभावना है।
नियंत्रक एक मॉडल के लिए डेटा प्राप्त करने क्योंकि मॉडल वास्तव में सिर्फ एक गूंगा डेटा संरचना है कि जहां यह से अपने डेटा हो जाता है पता नहीं है किया जाना चाहिए के लिए जिम्मेदार होना चाहिए। लेकिन मैं नहीं चाहता कि नियंत्रक को कई अलग-अलग स्थानों में मॉडल बनाना पड़े।
जो मैंने शुरू किया है वह मुझे मॉडल बनाने के लिए एक कारखाना बना रहा है। इस कारखाने को नियंत्रक द्वारा कहा जाता है (मॉडल कारखाने के बारे में नहीं जानता)।
public static class JoinMailingListModelFactory {
public static JoinMailingListModel CreateJoinMailingListModel() {
return new JoinMailingListModel()
{
MailingLists = MailingListCache.GetPartnerMailingLists();
};
}
}
तो मेरा वास्तविक प्रश्न यह है कि इस मुद्दे के साथ अन्य लोग वास्तव में मॉडल बना रहे हैं। नई एमवीसी सुविधाओं के साथ भावी संगतता के लिए सबसे अच्छा तरीका क्या होगा?
- एनबी: वहाँ
RenderAction()
साथ मुद्दों है कि मैं यहाँ पर नहीं जाऊंगा कर रहे हैं - अपने ही MVCContrib में और ASP.NET-MVC के RTM संस्करण में नहीं होगा कि कम से कम नहीं। अन्य मुद्दों ने sufficent problems का कारण बना दिया कि मैंने इसका उपयोग नहीं किया। तो अब के लिए नाटक करें कि केवलRenderPartial()
मौजूद है - या कम से कम यही वह है जिसे मैंने उपयोग करने का निर्णय लिया है।
जितना मैंने सोचा उतना कम मुझे इस विचार को पसंद आया। तो जितना मैंने इसके बारे में सोचा था उतना ही मैंने इसे पसंद किया। मुख्य रूप से क्योंकि किसी के लिए किसी पृष्ठ पर नियंत्रण जोड़ने के लिए यह बहुत आसान है - केवल विशेषता और रेंडरपार्टियल जोड़ें और आप कर चुके हैं। –
यह बहुत सोच की तरह लगता है ;- –
मेरे ऐप में कई स्थानों पर इस दृष्टिकोण का उपयोग कर समाप्त हुआ। दुनिया भर में मॉडलों के लिए कुछ चीजों को लागू करने के लिए यह बहुत साफ है। मैं इसे 'बेस मॉडल' के लिए उपयोग करता हूं जो कि एक मास्टर पेज से संबंधित है और साइट के विभिन्न क्षेत्रों के लिए 'क्षेत्र मॉडल' भी है। काफी लचीला है और जब मैं अपने मॉडलों में चीजों को इंजेक्शन देने में पूरी तरह से प्यार नहीं कर रहा हूं तो यह बहुत अच्छी तरह से काम कर रहा है –