2011-01-11 39 views
7

(एक छोटे से देर से मैं जानता हूँ कि) कुछ साल मैं अब MVC में प्राप्त करने के लिए शुरू कर रहा हूँ के लिए दोनों WinForms में .net और ASP.net के साथ काम करने के बाद। मेरे लिए एक बड़ा भ्रम वेबफॉर्म में उपयोगकर्ता नियंत्रण की अवधारणा के समान, पुन: प्रयोज्य 'घटकों' की अवधारणा है।एएसपी> शुद्ध MVC पुन: प्रयोज्य partials

उदाहरण के लिए, मैं अपनी साइट, जिनमें से एक के सदस्य क्षेत्र के भीतर 'widgets' की एक संख्या है चाहते हैं उपयोगकर्ताओं में लॉग इन के विवरण खाता प्रबंधक है। मैं इसे आंशिक के रूप में बना सकता हूं, हालांकि जब पेज लोड करता है तो डेटा को व्यूमोडेल/व्यू डेटा के हिस्से के रूप में पारित करने की आवश्यकता होती है। मैं विभिन्न वर्गों की संख्या में इस विजेट का उपयोग करने के जो तब अर्थ यह होगा कि मैं अलग नियंत्रकों की एक संख्या में में डेटा पारित करने के लिए कोड रखना होगा चाहते हैं। ऐसा लगता है कि यह DRY सिद्धांत का उल्लंघन करता है, या क्या मुझे यहां कुछ याद आ रही है? मैं आदर्श रूप से 1 आंशिक के भीतर सबकुछ को समाहित करना चाहता हूं जिसे किसी भी पृष्ठ में उपयोग किया जा सकता है।

1) बहुत तर्क के बिना सरल नियंत्रण के लिए, आप पर नियंत्रण के लिए कस्टम दृश्य मॉडल का नया उदाहरण बना सकते हैं::

उत्तर

4

आप तीन तरीकों जा सकते हैं Html.RenderPartial ("YourControl", नई YourControlViewModel() {पैराम 1 = "वैल्यू 1", पैराम 2 = मॉडल। अन्यथाल्यू});

2) यदि आप नियंत्रण के लिए कुछ वापस अंत तर्क की जरूरत है, तो आप Html.RenderAction ("ActionName", "SomeControllerName", RouteValuesDictionary) का उपयोग कर सकते हैं; यह मानक नियंत्रक कार्रवाई कॉल करेंगे, दृश्य का उपयोग, और जिसके परिणामस्वरूप उत्पादन को वापस पृष्ठ पर डालें। आप यह सुनिश्चित करें कि विधि केवल Html.RenderPartial से उपलब्ध हो जाएगा नियंत्रक विधि के लिए [ChildActionOnly] गुण जोड़ सकते हैं। यह एमवीसी सिद्धांत का थोड़ा उल्लंघन कर रहा है (देखें नियंत्रक को कॉल नहीं करना चाहिए), लेकिन विगेट्स के लिए यह बहुत अच्छा है, और इसे बिना किसी मुद्दे के रूबी पर रूबी में उपयोग किया जाता है। आप से Haacked

3 महान लेख की जांच कर सकते हैं) कस्टम दिनांक स्वरूपण जैसे कार्यों की गणना आदि के लिए कस्टम एचटीएमएल सहायक बनाएं ..

आपके मामले में, मैं नंबर दो का चयन करेंगे।

+0

भावना का एक बहुत बनाता है यही कारण है कि - मैं अपने सरल मामले मैं या तो कोई इस्तेमाल कर सकते हैं में लगता है। 1 और व्यूमोडेल कन्स्ट्रक्टर से वर्तमान में लॉग इन उपयोगकर्ता को पुनर्प्राप्त करें, या नंबर 2 यदि 2 तरीके की बातचीत की आवश्यकता है। – Macros

+0

यदि दृश्य मॉडल में उपयोगकर्ता की आईडी है, तो आप इसे रूट मानों में पास कर सकते हैं, 2 का उपयोग कर सकते हैं) और डेटा को कैश कर सकते हैं। एक और विकल्प सत्र में मौजूदा लॉग इन उपयोगकर्ता को लोड करना है, यह बहुत आसान हो सकता है, लेकिन कुछ सिद्धांतों का उल्लंघन करता है। अगर आपको यह पसंद है तो जवाब चिह्नित करें, धन्यवाद। – jhexp

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