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




asp.net-mvc user-controls (3)

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

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

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

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

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

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

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

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


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

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

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

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

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

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


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

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





user-controls