2012-10-25 20 views
13

में उप-फ़ोल्डर्स में विचार जोड़ें मैं एएसपी.नेट एमवीसी 3 प्रोजेक्ट पर काम कर रहा हूं। मैं सादगी के लिए उप-फ़ोल्डरों में नियंत्रकों, मॉडल, और विचारों को विभाजित करना चाहता हूं। मैं इसे नियंत्रकों और मॉडलों के साथ करने में सक्षम हूं लेकिन जब मैं एक दृश्य बनाता हूं तो यह स्वचालित रूप से रूट फ़ोल्डर Views पर बनाता है, क्या इस समस्या को हल करने का कोई तरीका है?एएसपी.नेट एमवीसी 3

उदाहरण के लिए। मैं के रूप में

मॉडल वर्ग, के रूप में

Models/Finance/Bank.cs 
Models/Finance/Finance.cs 
Models/Production/Production.cs 

नियंत्रक,

Controllers/Finance/BankController/Create 
Controllers/Finance/BudgetController/Create 
Controllers/Production/ProcessController/Create 

बना सकते हैं, लेकिन मैं कहाँ से ऊपर कार्यों के लिए दृश्य बनाने के लिए करने की कोशिश की, यह करने के लिए बनाता है

Views/Bank/Create.aspx 
Views/Budget/Create.aspx 
Views/Process/Create.aspx 

मुझे यह चाहिए कि यह होना चाहिए,

Views/Finance/Bank/Create.aspx 
Views/Finance/Budget/Create.aspx 
Views/Prodution/Process/Create.aspx 

वहाँ नियंत्रकों और मॉडलों के लिए बनाई गई है कि के रूप में ही उप-फ़ोल्डर में दृश्य बनाने के लिए कोई तरीका है? धन्यवाद!

+0

कुछ ठीक नहीं है। 'ग्राहक नियंत्रक' को दो फ़ोल्डरों की आवश्यकता नहीं होनी चाहिए। –

उत्तर

17

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

दृश्य, दूसरे हाथ पर अलग हैं। वे टेक्स्ट फाइलें हैं जो सर्वर पर तैनात की जाती हैं और रन-टाइम पर लोड और पार्स की जाती हैं, इस प्रकार ढांचे को पता होना चाहिए कि उन्हें कहां मिलना है।

टूलिंग हमेशा ~ \ Views \ नियंत्रक फ़ोल्डर (या ~ क्षेत्र \ क्षेत्रनाम \ नियंत्रक फ़ोल्डर) में दृश्य बनाएगी। आप उन्हें कहीं भी कहीं भी ले जा सकते हैं, लेकिन आपको पूरे फ़ोल्डर पथ को व्यू() विधि (.cshtml सहित) देना होगा। या आपको एक कस्टम व्यूइंजिन लागू करना होगा जो खोज पथ सेट करता है जहां आप उन्हें चाहते हैं।

0

देखें नाम का नाम नियंत्रक के नाम के अनुसार है, आपको नियम का पालन करना चाहिए।
यदि आप इसे Views/Admin/Create बनाते हैं, तो आपके CustomerController.cs को AdminController.cs नाम दिया जाना चाहिए।

+2

यह सबकंट्रोलर में अनुवाद कैसे करता है? जैसे 'दृश्य/व्यवस्थापक/ग्राहक/बनाएँ 'जहां मेरे पास' AdminController' और 'ग्राहक नियंत्रक' उप-नियंत्रक है। – Dan

21

निम्न चरणों को मेरे लिए काम किया,

  1. उप-फ़ोल्डर बनाएँ के रूप में आप Views (रूट फ़ोल्डर) में चाहते हैं। मेरे मामले में यह वित्त & उत्पादन था।

  2. उचित उप-फ़ोल्डरों में Views में स्वचालित रूप से बनाए गए फ़ोल्डर खींचें।मेरे मामले में Finance में Bank & Budget और Process में करने के लिए Production

  3. आप नियंत्रक कार्रवाई से एक दृश्य वापसी करते हुए, के रूप में देखने का पूरा पथ देते हैं,

    returnView("~/Views/Finance/Bank/Create.aspx")

    returnView("~/Views/Finance/Budget/Create.aspx")

    returnView("~/Views/Production/Process/Create.aspx")

+3

यही है @Mystere Man ने सुझाव दिया है कि, कोई अन्य उत्तर लिखने का कोई कारण नहीं है, बस –

+1

स्वीकार किए गए अपने उत्तर को चिह्नित करें यह रेजर सीएसटीएमएल के लिए भी काम करता है। उदाहरण: "वापसी देखें (" ~/दृश्य/कुछ SubFolder/Login.cshtml "); – granadaCoder

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