2012-02-10 10 views
9

मैं जानना चाहता हूं कि प्रति आर्टिफैक्ट प्रकार (नियंत्रक, दृश्य) के बजाय एक फ़ोल्डर प्रति सुविधा (ग्राहक, ऑर्डर) का उपयोग करके एक वेब एप्लिकेशन को बनाने के लिए मैं कैसे कर सकता हूं; यह बड़ी परियोजनाओं के साथ बड़ी परियोजनाओं को व्यवस्थित करने का एक बेहतर तरीका प्रतीत होता है, लेकिन मुझे इसके बारे में कोई जानकारी नहीं मिल रही है।प्रति-कलाकृति के बजाय प्रति-सुविधा संगठन का उपयोग करके एएसपी.नेट एमवीसी एप्लिकेशन को कैसे व्यवस्थित किया जाए?

मुझे नहीं लगता कि क्षेत्र का उपयोग करना एक समाधान होगा क्योंकि एक क्षेत्र प्रति-सुविधा का उपयोग करने के लिए बहुत सारे घोंसले वाले फ़ोल्डरों की आवश्यकता होगी।

मुझे लगता है कि मैं जो करना चाहता हूं उसे IViewEngine कार्यान्वयन को अनुकूलित करके संभव होना चाहिए, लेकिन मुझे इसके बारे में निश्चित नहीं है।

क्या किसी ने ऐसा करने की कोशिश की है?

उत्तर

2

यदि आप चाहें तो आप कहां स्थित हैं संग्रहीत स्थानों का स्थान बदल सकते हैं। एक उदाहरण, http://weblogs.asp.net/imranbaloch/archive/2011/06/27/view-engine-with-dynamic-view-location.asp

कॉन्फ़िगरेशन पर सम्मेलन के दर्शन के कारण एएसपी.नेट एमवीसी विकसित करना आसान है। यदि आप वास्तव में उन सम्मेलनों को बदलना चाहते हैं, तो आप कर सकते हैं; हालांकि, आप खुद को बहुत अधिक कोडिंग कर पाएंगे। उदाहरण के लिए, मचान आपके कॉन्फ़िगरेशन के साथ काम नहीं करेगा।

क्यों न केवल आर्टिफैक्ट फ़ोल्डरों के अंदर अपने तार्किक अलगाव बनाएं? तो, आपके मॉडल फ़ोल्डर के अंदर ViewModels के लिए एक फ़ोल्डर है और एक डेटामोडल्स के लिए एक फ़ोल्डर है। DataModels फ़ोल्डर के अंदर, मॉडल के विभिन्न सबसेट (ग्राहक, ऑर्डर, इत्यादि) के लिए फ़ोल्डर्स बनाएं। बस मेरे 2 सेंट।

+0

यह मूल कारण पसंद नहीं है क्योंकि यह कम या ज्यादा कारण है हस्तक्षेप: http://www.paulstovell.com/horizontal-vertical-project- संरचना - मैं पहले से ही अन्य परियोजनाओं में इस तरह की संरचना का उपयोग कर रहा हूं और यह मुझे अच्छी तरह से उपयुक्त बनाता है। मुझे पता है कि यह IViewEngine और IControllerFactory के कार्यान्वयन को अनुकूलित करने के लिए किया जा सकता है, यहां मैं सम्मेलनों के इस परिवर्तन के बारे में कुछ हाथों के अनुभव की तलाश कर रहा हूं और यह क्यों है या यह इसके लायक नहीं है। नोट: मैं मचान का उपयोग नहीं करूँगा – gschuager

+0

मैं सहमत हूं। भूमिका से ग्रुपिंग, उदा। एक बार कुछ नियंत्रकों से परे बढ़ने के बाद नियंत्रक/मॉडल/विचार वास्तव में आपको काटना शुरू कर देते हैं। फीचर आधारित संगठन उत्पादन परियोजनाओं के आयोजन में इतना उन्नत है। किसी भी परियोजना के साथ अत्यधिक अनुशंसा करते हैं। – demisx

2

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

- App 
    - Features 
    - Orders 
     - OrdersController.cs 
     - Create.cshtml 
     - Create.js 
     - CreateModel.cs 
     - Edit.cshtml 
     - Edit.js 
     - EditModel.cs 
     - EditViewModel.cs 
     ... 
    - Customers 
     ... 
    - Shared 
     - _Layout.cshtml 
     - Error.cshtml 
    - _ViewStart.cshtml 
    - Web.config 
    - FeatureViewLocationRazorViewEngine.cs 
    ... 
    - Web.config 

आदेश में इस फ़ोल्डर संरचना आप नए दृश्य इंजन RazorViewEngine से विरासत में मिली वर्ग बनाने की जरूरत, उचित ViewLocationFormats, MasterLocationFormats, PartialViewLocationFormats सेट के साथ उस्तरा का उपयोग करें और आपके विचार के कहने जोड़ने के लिए: इस परियोजना संरचना की तरह लग सकता है कि कैसे है इंजन ViewEngines.Engines संग्रह। नमूना कार्यान्वयन के लिए और इसका उपयोग टिम जी थॉमस द्वारा FEATURE FOLDERS IN ASP.NET MVC article पर जांचें।

यदि आप अपने विचारों में Scripts जैसे वर्गों का उपयोग करना चाहते हैं तो आपको उनके नामस्थान आयात करने की भी आवश्यकता है। ऐसा करने का एक तरीका है वेब.कॉन्फिग फ़ाइल को पुरानी दृश्य फ़ोल्डर से विशेषता फ़ोल्डर में कॉपी करना। अन्य विकल्पों के लिए How do I import a namespace in Razor View Page? प्रश्न देखें।

अधिक जानकारी जांच निम्न लेख के लिए: टिम जी थॉमस

  • FEATURE FOLDERS AND JAVASCRIPT द्वारा

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

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