ASP.NET MVC में उपयोगकर्ता नियंत्रण को लागू करने का सबसे अच्छा तरीका क्या है?




asp.net-mvc user-controls (4)

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

संपादित करें: मैंने अभी यहां इस बारे में पोस्ट किया है: http://mhinze.com/subcontrollers-in-aspnet-mvc/

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

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

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


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

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

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


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

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

आप पुरानी सिंटैक्स भी देख सकते हैं जो कि PR5 के अनुसार अब वैध नहीं है

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

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


एमवीसी का अलग पृष्ठ जीवन चक्र आपके उपयोगकर्ता नियंत्रण से भिन्न है।

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

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

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

मॉडल केवल एटिटी क्लासेस है जो आपके कोड का उपभोग करने के पीछे है।

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





user-controls