2008-09-03 17 views
11

इस साइट पर कई अन्य लोगों की तरह मैं भविष्य की परियोजनाओं के लिए एएसपी.नेट एमवीसी के लिए एक कदम पर विचार कर रहा हूं। वर्तमान में मेरी साइटें पारंपरिक एएसपी.नेट 2.0 वेब फॉर्म चला रही हैं, और यह हमारे लिए ठीक काम करती है, इसलिए मेरा दूसरा विकल्प सिर्फ मुझे पता है कि मैं एएसपी.NET 3.5 को एकीकृत AJAX सामान के साथ ले जाना चाहता हूं।एएसपी.नेट एमवीसी में उपयोगकर्ता नियंत्रण को लागू करने का सबसे अच्छा तरीका क्या है?

मैं इस बारे में सोच रहा हूं कि उपयोगकर्ता नियंत्रण ASP.NET MVC में कैसे काम करता है। हमारे पास .ASCX नियंत्रण, और कुछ समग्र नियंत्रण हैं। जब मैं वेब डिज़ाइनरों के साथ काम करता हूं तो उन्हें एएससीएक्स नियंत्रणों का प्रभावी ढंग से उपयोग करने के लिए बहुत आसान होता है, यहां तक ​​कि किसी प्रोग्रामिंग ज्ञान के बिना भी, यह एक निश्चित प्लस है। लेकिन फिर निश्चित रूप से डाउनसाइड्स पृष्ठ जीवन चक्र हैं, जो गड़बड़ कर सकते हैं, और तथ्य यह है कि विभिन्न परियोजनाओं के बीच एएससीएक्स नियंत्रण साझा करना मुश्किल है। समग्र नियंत्रण शेयर-सक्षम हैं, लेकिन मूल रूप से एक डिजाइनर के लिए एक ब्लैक बॉक्स।

एएसपी.नेट एमवीसी में मॉडल क्या है? क्या नियंत्रण बनाने का कोई तरीका है जो एएससीएक्स और समग्र नियंत्रणों का उपयोग करने वाली समस्याओं को हल करता है? कोड को तोड़ने के बारे में चिंता किए बिना वेब डिज़ाइनरों के लिए आसान पहुंच प्रदान करना एक महत्वपूर्ण विचार है।

उत्तर

8

एक उपयोगकर्ता नियंत्रण आप निम्नलिखित कॉल कर लागू करने के लिए:

<% Html.RenderPartial("~/Views/Shared/MyControl.ascx", {data model object}) %> 

तुम भी पुराने वाक्य रचना जो PR5 के रूप में मान्य नहीं है देख सकते हैं अब और

<%= Html.RenderUserControl("~/Views/Shared/MyControl.ascx", {data model object}) %> 

तुम हमेशा चिंता करने की ज़रूरत होगी वेब फॉर्म से एमवीसी में जाने पर कोड तोड़ने के बारे में, हालांकि एएसपी.नेट एमवीसी टीम ने समस्याओं को कम करने के लिए एक महान काम किया है।

1

जैसा कि निक ने सुझाव दिया था, आप वास्तव में अपने उपयोगकर्ता नियंत्रण प्रस्तुत करने में सक्षम होंगे, लेकिन जाहिर है कि पारंपरिक एएसपी वेबफॉर्म से पेज-चक्र, पेगस्टेट और पोस्टबैक अब काम नहीं करेगा, इस प्रकार आपके नियंत्रण सबसे अधिक बेकार हो जाएंगे।

मुझे लगता है कि आपको अपनी वेबसाइट को एमवीसी पर पोर्ट करने के लिए अपने अधिकांश जटिल नियंत्रणों को फिर से लिखना होगा, जबकि सरल नियंत्रण, उदाहरण के लिए, केवल स्वरूपण प्रदान करते हैं और कोई पोस्टबैक स्थिति नहीं है, बस काम करना चाहिए। निक द्वारा प्रदान किया गया कोड बस इस मामले में काम करेगा।

और अधिक परियोजनाओं के बीच साझा करने के बारे में: मुझे लगता है कि नियंत्रण "पुन: प्रयोज्य एचटीएमएल-प्रतिपादन घटकों" की तरह अधिक होगा जो तर्क के साथ "पुन: प्रयोज्य कोड घटकों" की बजाय वेबसाइट पर साझा किया जा सकता है (जैसे वेबफॉर्म नियंत्रण)। आपका वेब तर्क पेज नियंत्रकों में होना चाहिए और HTML नियंत्रण में नहीं होना चाहिए। इसलिए अधिक परियोजनाओं में नियंत्रण साझा करना वेबफॉर्म मामले में उतना उपयोगी नहीं होगा।

1

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

संपादित करें: मैं सिर्फ यह यहाँ के बारे में पोस्ट: अलग पृष्ठ जीवन चक्र http://mhinze.com/subcontrollers-in-aspnet-mvc/

+2

इसमें एक मृत लिंक है। – chrish

1

MVC है अपने उपयोगकर्ता नियंत्रण करने के लिए की तुलना करें।

आप इसे फिर से लिखने के लिए विचार कर सकते हैं।

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

पीछे कोड (aspx.cs) के लिए आपको इसे नियंत्रक कक्षा में परिवर्तित करने की आवश्यकता है। Page_Load विधि अब काम नहीं करेगी। आप इसे Index() विधि पर छोड़ सकते हैं।

मॉडल केवल इकाई वर्ग है जो आपके कोड का उपभोग करने के पीछे है।

निष्कर्ष, यह कुल पुनर्लेखन है। चीयर्स। हैप्पी कोडिंग

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

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