2012-05-16 8 views
15

एएसपी.नेट वेबफॉर्म में, App_Code कोड डालने और रन-टाइम पर इसका उपयोग करने के लिए मानक फ़ोल्डर है। लेकिन मुझे लगता है कि यह फ़ोल्डर एएसपी.नेट एमवीसी में अलग है, मेरा सवाल है :एएसपी.नेट एमवीसी 3 और ऐप_Cोड फ़ोल्डर

  • मुझे एएसपी.नेट एमवीसी में अपना कोड (एक्सटेंशन विधियां, हेल्पर्स, ...) कहां रखना चाहिए। जब मैं App_Code फ़ोल्डर में कोड संग्रहीत करता हूं, तो मैं controller में थीम का उपयोग नहीं कर सकता लेकिन वे views में ठीक काम करते हैं।

  • इकाई की रूपरेखा, एक ही सवाल है, जहां मैं edmx और टीटी फ़ाइलें रखना चाहिए के बारे में। मैं उपयोग नहीं करते समय कोड-प्रथम

अद्यतन:

कुछ खोज के बाद, अंत में मैं एक नया कक्षा लाइब्रेरी मेरी समाधान में प्रोजेक्ट बनाया, कोड में उपलब्ध है सभी controllers और viewsमुझे अभी भी पता नहीं है कि App_Code में कोड नियंत्रक

+1

नियंत्रक में app_code कक्षाओं का उपयोग करने के लिए यहां जांचें http://stackoverflow.com/questions/1222281/app-code-classes-not-accessable-asp-net – yayadavid

+1

ऐप_Code कक्षाएं ऐप initilization के दौरान संकलित की जाती हैं, इसलिए संकलन समय में वे उपलब्ध नहीं हैं। –

+0

ऐप_Cोड फ़ोल्डर आपको प्रीकंपिल्ड एमवीसी प्रोजेक्ट को प्रकाशित करने से रोक देगा (पहले पेज हिट प्रतीक्षा को रोकने के लिए) और एक त्रुटि फेंक देगा "निर्देशिका"//App_Code/'अनुमति नहीं है क्योंकि एप्लिकेशन प्रीकंपिल्ड किया गया है "' – Muflix

उत्तर

31

मेरे पास एक ही समस्या थी, मेरी कक्षा Utility.cs को मेरी एमवीसी परियोजना के अंदर पहचाना नहीं गया था। मैंने बिल्ड एक्शन "कंटेंट" को "कंपाइल" में बदल दिया और इससे मेरी समस्या हल हो गई। उम्मीद है कि मदद करता है।

+1

यदि मैं अपनी परियोजना में ऐसा करता हूं तो मुझे मिलता है: "कॉल निम्न विधियों या गुणों के बीच संदिग्ध है" – developer82

+0

आपको बहुत धन्यवाद :) –

+2

यह App_Code के उद्देश्य को हरा देता है। आपके लिए कोड फ़ाइलों को छोड़ने में सक्षम होने के लिए App_Code मौजूद है और उन्हें रनटाइम पर गतिशील रूप से संकलित कर सकते हैं। उन्हें परियोजना का एक हिस्सा होने के बावजूद अभी भी संकलन बिल्ड पर कार्रवाई करें। – mare

0

ठीक है, कुछ पहले से ही मौजूदा ओपनसोर्स परियोजनाओं को डाउनलोड करने का प्रयास करें। उनमें से एक जटिल है, लेकिन बहुत अच्छा है अगर आपको इसकी समझ मिल जाएगी - orchard

सबसे अच्छा अभ्यास इस तर्क को डीएएल (डेटा एक्सेस लेयर) या बीएलएल (बिजनेस लॉजिक लेयर) में ले जा रहा है। आपके आवेदन की जटिलता पर निर्भर करता है।

2

मैं this tutorial से शुरू करने की सलाह दूंगा। यह पहले ईएफ कोड का उपयोग करता है, लेकिन यदि आप चाहें तो सामान्य कोड के साथ कोड को पहले DbContext पर प्रतिस्थापित कर सकते हैं (संकेत: मॉडल फ़ोल्डर)।

App_Codeवेब साइट प्रोजेक्ट्स के लिए विशिष्ट है। आईएमओ, यह वेब साइटों की सबसे सरल लेकिन सभी को व्यवस्थित करने का एक भयानक तरीका है। एक एमवीसी परियोजना वेब अनुप्रयोग परियोजना है, इसलिए App_Code नहीं है और आपकी कक्षाओं को कहीं भी कहीं भी परिभाषित किया जा सकता है।

10

वेब साइट परियोजनाओं में App_Code आवश्यक है क्योंकि इसका एक विशेष अर्थ है। इसका मतलब है "इन फ़ाइलों को किसी वेब ब्राउज़र पर न दें"। एएसपी.नेट एमवीसी में, अधिकांश मामलों में फ़ाइलों को सीधे ब्राउज़र पर नहीं दिया जाता है, इसलिए App_Code आवश्यक नहीं है। आप जो भी फ़ोल्डर चाहते हैं, उस कोड कोड व्हीवर को आप चाह सकते हैं क्योंकि इन फ़ाइलों को एक डीएलएल में संकलित किया गया है और आम तौर पर वेबसाइट पर प्रकाशित नहीं किया जाता है।

स्टैंड-अलोन लाइब्रेरी का उपयोग करना भी एक अच्छा समाधान है।

+0

मेरे पास एक ही प्रश्न है । मुझे अपना कोड कहां रखना चाहिए जो डीएलएल में शामिल नहीं है? वेब एप्लिकेशन में अभी भी कुछ कोड शेष है। ठीक है, मान लीजिए कि मैं कोड फाइलों को घुमा सकता हूं जो मैं चाहता हूं। क्या कोई मानक स्थान है जहां वेब डेवलपर कोड की अपेक्षा करते हैं? App_Code फ़ोल्डर? हेल्पर्स फ़ोल्डर? एमएस से कुछ उदाहरणों में मुझे नोटिस है, हेल्पर्स और मॉडल जैसे फ़ोल्डर्स हैं। – qub1n

+0

@ qub1n - आपके पास ऐसा कोड क्यों होगा जो डीएलएल में नहीं है? यहां तक ​​कि आपके कोड-बैक में कोड को डीएलएल –

+0

में संकलित किया जा सकता है। Global.asax.cs को छोड़कर वेब एप्लिकेशन में कोड के साथ वास्तव में कोई भी फ़ाइल नहीं होने का सबसे अच्छा अभ्यास है? – qub1n

-1

उन लोगों के लिए जो दूसरी परियोजना/कक्षा पुस्तकालय नहीं चाहते हैं और केवल कुछ सी # कक्षाओं के लिए एक साधारण फ़ोल्डर चाहते हैं, मैं "App_Classes" का प्रस्ताव करता हूं।

+0

कृपया मुझे और बताएं। यदि आपने 'App_Classes' के परिचय और इसका उपयोग करने के तरीके के बारे में निर्देश लिखा है तो यह एक शानदार जवाब देगा। –

1

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

यह एएसपी.नेट एमवीसी परियोजनाओं में काम करता है, आपको भी अपनी कोड फ़ाइलों को .cshtml एक्सटेंशन के साथ नामित करना होगा।

+0

कृपया मुझे बताएं कि "Startup.cs" कैसे काम करता है जैसा कि इसे App_Code में करना चाहिए? – BerggreenDK