2009-02-27 17 views
9

मुझे वास्तव में एएसपी.नेट एमवीसी काम करता है। मुझे आगे बढ़ने वाली सभी नई वेब परियोजनाओं पर इसे लागू करना अच्छा लगेगा, लेकिन मैंने दूसरे दिन एक प्रोटोटाइप में एक झटका लगाया कि मुझे वास्तव में अच्छा समाधान नहीं मिला है, इसलिए मैं आपसे पूछता हूं, आप एक एमवीसी ऐप कैसे डिजाइन करेंगे यह सामान्य REST पैटर्न फिट नहीं है? उदाहरण के तौर पर, जिस प्रोटोटाइप को मैं डिजाइन कर रहा था, उसके कई पेज होंगे, लेकिन पेज स्वयं आवश्यक रूप से डोमेन मॉडल से बंधे नहीं हैं। उदाहरण के लिए, एक सरल पंजीकरण साइट ले, अगले पन्नों हो सकता है जो:, कभी कभीएएसपी.नेट एमवीसी नियंत्रक क्रियाएं डिजाइन

  • /Default.aspx
  • /Register.aspx
  • /ThankYou.aspx

एक ऐसी प्रोग्राम को साइन अप को मॉडरेट करने या डेटा की समीक्षा करने जैसे विवरणों से निपटने के लिए एक व्यवस्थापक अनुभाग की आवश्यकता हो सकती है। एक मानक ASP.NET वेब ऐप्लिकेशन में, मैं निम्नलिखित

  • /Admin/Default.aspx
  • /Admin/ListRegistrations.aspx
  • /Admin/ViewReports.aspx ... जोड़ सकते हैं

  • घर-> सूचकांक
  • :

    यह इस तरह के रूप में दो नियंत्रकों के लिए MVC पैटर्न से एक अस्वीकार्य विचलन होगा, इस मामले में,

  • घर-> रजिस्टर
  • घर-> ThankYou
  • Admin-> सूचकांक
  • Admin-> ListRegistrations
  • Admin-> रिपोर्ट

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

मुझे लगता है कि जब मैं एमवीसी सोचता हूं, मुझे आरईएसटी भी लगता है, और वास्तविक संस्थाओं या कार्यों के बजाय पृष्ठों का प्रतिनिधित्व करने वाले नियंत्रक क्रियाएं मेरे साथ सही नहीं बैठती हैं। तुम क्या सोचते हो?

उत्तर

3

आप एमवीसी के साथ हमेशा एएसपी.नेट वेब फॉर्म मिश्रण कर सकते हैं।

बस अपने अनुमार्गण तालिका को

routes.IgnoreRoute("Pages/{*path}"); 

जोड़ सकते हैं और आवेदन की Pages फ़ोल्डर में पारंपरिक वेब प्रपत्र पृष्ठों को जोड़ने।

+0

यह शायद सबसे अच्छा विचार है। नियमित वेब रूपों में व्यवस्थापक विशिष्ट तर्क को रखते हुए मैं एमवीसी सामान का उपयोग करने के लिए साइट के उपयोगकर्ता हिस्से को डिज़ाइन कर सकता हूं। मुझे याद दिलाने के लिये धन्यवाद। – Chris

1

आपके पास कई नियंत्रक हो सकते हैं; वह लेआउट उचित दिखता है। ध्यान दें कि मार्ग पर सीधे {नियंत्रक}/{action} पर मैप करने के लिए नहीं हैं, लेकिन यह चीजों को सरल रखता है। मुझे ठीक लग रहा है - सिवाय इसके कि मुझे संभवतः धन्यवाद के रूप में धन्यवाद होगा - यानी रजिस्टर [जीईटी] शायद पंजीकरण के लिए एक अलग दृश्य का उपयोग करता है [POST]

+1

मुझे लगता है कि पैटर्न के साथ मेरा भ्रम/निराशा वास्तव में एक सामान्य परिदृश्य के बारे में बात करते समय निर्माण शुरू होती है जहां किसी को कार्यक्षमता को अलग करने के लिए नेस्टेड फ़ोल्डर्स हो सकते हैं। उदाहरण के लिए, उपयोगकर्ताओं के लिए एक उत्पाद नियंत्रक, लेकिन फिर उत्पादों को बनाए रखने के लिए एक व्यवस्थापक-> उत्पाद नियंत्रक। कहा पे? कैसे? – Chris

3

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

आपके अन्य कार्यों के लिए, रिपोर्ट नियंत्रक के बारे में कैसे? इसके बाद आप एक प्रशासन नियंत्रक भी कर सकते हैं जिसके इंडेक्स एक्शन/व्यू में रिपोर्ट नियंत्रक पर विभिन्न व्यवस्थापक कार्रवाइयों के लिंक शामिल हैं।

लघु संस्करण: फ़ंक्शन द्वारा नियंत्रक में समूह क्रियाएं, साइट नेविगेशन नहीं।

+0

मुझे वह मिलता है, लेकिन विचारों के बारे में क्या? परिदृश्य में मैंने वर्णन किया है, मैं व्यवस्थापक अनुभाग के लिए नियंत्रक क्रियाओं को उपयोगकर्ता अनुभाग के मुकाबले एक अलग मास्टर पेज का उत्तराधिकारी बनाना चाहता हूं। उनके द्वारा उपयोग किए जाने वाले मास्टर पेज के आधार पर इस तरह के विचारों को अलग करने के लिए एक अच्छा तार्किक तरीका प्रतीत नहीं होता है। – Chris

+0

नियंत्रक क्रियाएं = विचार, मेरा मतलब है – Chris

+0

आपके पास दृश्य/व्यवस्थापक फ़ोल्डर में एक व्यवस्थापक मास्टरपृष्ठ हो सकता है जो दृश्य/रिपोर्ट संदर्भ में विचार। मुझे ऐसा करने में कुछ भी गलत नहीं दिख रहा है - आप वास्तव में प्रस्तुति टेम्पलेट्स के बारे में बात कर रहे हैं, नियंत्रक को कुछ भी पता नहीं होना चाहिए। – Troy

3

मैं आमतौर पर एक परियोजना में पहली चीज़ के रूप में "होम" नियंत्रक को कुचलने और इसे "पृष्ठ" नियंत्रक के साथ प्रतिस्थापित करता हूं। मैं उस चीज़ का उपयोग किसी भी चीज़ के लिए करता हूं जो "बस" पृष्ठ है। "एफएक्यू", "हमसे संपर्क करें" जैसी चीजें, आदि। मैं इसे कम से कम आंशिक रूप से करता हूं क्योंकि गृह नियंत्रक के लिए डिफ़ॉल्ट दृष्टिकोण की आवश्यकता होती है जब भी आपको बुनियादी, स्थैतिक पृष्ठ की आवश्यकता होती है।

उस नियंत्रक में, मेरे पास केवल एक ही क्रिया है: प्रदर्शन। वह क्रिया उन सभी पृष्ठों को एक ही संदर्भ वस्तु देता है। मैं वास्तव में डेटाबेस में उन पृष्ठों के लिए सामग्री को "स्लग" के साथ संग्रहीत करता हूं और इसे एनवीलोसिटी टेम्पलेटिंग में जोड़ता हूं, लेकिन फाइलों में केवल स्थिर HTML या NVelocity टेम्पलेट्स भी काम करेंगे।

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

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

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