2009-04-02 13 views
6

जैसा कि मैं समझता हूं, जब हम एमवीपी का उपयोग करते हैं तो हम प्रस्तुतकर्ता को सभी प्रस्तुति तर्क ले जाते हैं। लेकिन हम प्रेजेंटर को देखने के कार्यान्वयन के बारे में नहीं बताना चाहते हैं, तो हम एप्लिकेशन में दूसरी स्क्रीन पर कैसे जा सकते हैं? आप अपने असली एप्लिकेशन पर एप्लिकेशन प्रवाह का प्रबंधन कैसे करते हैं?सी # WinForms का उपयोग कर एमवीपी में विचारों के बीच आप नेविगेट कैसे करते हैं?

उत्तर

1

यह दृश्य पर एक तरीका है। तो आपके पास ShowCustomerForm() जैसी एक अमूर्त विधि होगी, उदाहरण के लिए, और WinForms के लिए कार्यान्वयन ग्राहकफॉर्म होगा। दिखाएं (या जो भी WinForms में है) और वेबफॉर्म में यह प्रतिक्रिया होगी। रेडियिक्ट (ग्राहकफॉर्म.एएसपीएक्स)।

+0

और दृश्य के बाद आईसी कस्टमरफॉर्म इंटरफ़ेस का एक उदाहरण बनाया गया है, तो आप इस तरह की कुछ विधि का उपयोग करके प्रस्तुतकर्ता को पास कर सकते हैं: Init (CustomerFormPresenter) – dzendras

3

उदाहरण के लिए, कुछ नाविक इंटरफ़ेस का उपयोग करना:

interface INavigator 
{ 
    void MoveTo (string screenName); 
    void MoveTo (string screenName, NavigationParameters parameters); 
} 

प्रत्येक प्रस्तोता तो इस नाविक निर्माता में पारित का एक उदाहरण होगा। इस तरह नेविगेशन प्रस्तुतकर्ता से और व्यक्तिगत विचारों से दोनों को हटा दिया जाता है।

आप कॉन्फ़िगरेशन में परिभाषित स्क्रीन नामों और वास्तविक फॉर्म कक्षाओं के बीच मैपिंग कर सकते हैं।

1

मुझे लगता है कि आप एक और स्क्रीन का मतलब है जिसकी अपनी एमवीपी-जोड़ी है?

मैं आज सुबह उस मामले के बारे में सोच रहा था, मेरा समाधान शायद यह होगा कि एक समन्वयक प्रेजेंटर और एमवीपी-जोड़ी को खोला जाना चाहिए। वह नया प्रस्तुतकर्ता + दृश्य खोलता है और, समाप्त होने पर, परिणाम के साथ पहले प्रस्तुति पर वैकल्पिक रूप से एक विधि को कॉल करता है।

इस तरह, पहले एमवीपी को नई स्क्रीन के बारे में कुछ भी नहीं पता है, वे केवल एक घटना को आग लगाते हैं। दूसरी विंडो खोलने और वापस संचार करने के लिए तर्क पूरी तरह से समन्वयक में निहित है।

0

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

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