2017-01-17 10 views
5

मैं एएसपी.नेट एमवीसी का उपयोग कर रहा हूं और नियंत्रक सबफ़ोल्डर बनाने की कोशिश कर रहा हूं। मैं इस साइट पर अन्य पोस्ट पर ध्यान दिया है और करने की कोशिश की है कि मैं क्या ऑनलाइन ढूँढने में सक्षम था, लेकिन यह अभी भी इस समस्या में चल रहा है:एएसपी.नेट एमवीसी नियंत्रक सबफ़ोल्डर

HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable. Please review the following URL and make sure that it is spelled correctly. 

नीचे स्क्रीनशॉट सबफ़ोल्डर मैं अपने नियंत्रक फ़ोल्डर में बनाई गई है।

enter image description here

और यहाँ मेरी दृश्य फ़ोल्डर का एक स्क्रीनशॉट है।

enter image description here

और यहाँ क्या मैं अपने RouteConfig.cs में करने की कोशिश की फाइल

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 

    routes.MapRoute(
     name: "AdminSubForder", 
     url: "admin/{controller}/{action}/{id}", 
     defaults: new { controller = "HomeAdmin", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

लेकिन मेरे सबफ़ोल्डर अभी भी काम नहीं करता है। मुझसे यहां क्या गलत हो रहा है?

+2

आपको Map.Route में अपना कंट्रोलर नेमस्पेस नाम निर्दिष्ट करना होगा ताकि यह नियंत्रक का पता लगा सके। इस पोस्ट का संदर्भ लें http://stackoverflow.com/questions/17178688/controller-in-sub-folder इसके अलावा, अपने व्यवस्थापक मार्ग को पहले पोस्टियन पर ले जाएं क्योंकि रूटिंग को कम से कम विशिष्ट विशिष्ट परिभाषित किया जाना चाहिए। –

+0

@KD मेरी RouteConfig.cs फ़ाइल में? – user979331

+0

इस लिंक का अनुसरण करें: http://stackoverflow.com/questions/33802430/subfolder-in-controllers-asp-net-mvc – sebu

उत्तर

3

कोशिश बातें निम्नलिखित ...

पहले तरीके निम्नलिखित में अपने मार्ग को परिभाषित ... मार्ग सबसे विशिष्टको कम विशिष्ट पैटर्न

public static void RegisterRoutes(RouteCollection routes) 
     { 
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

      routes.MapRoute(
        name: "AdminSubForder", 
        url: "admin/{controller}/{action}/{id}", 
        defaults: new { controller = "HomeAdmin", action = "Index", id = UrlParameter.Optional } 
       ); 
      routes.MapRoute(
       name: "Default", 
       url: "{controller}/{action}/{id}", 
       defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
      ); 


     } 

से परिभाषित किया जाना चाहिए अगर यह अभी भी काम नहीं करता है, निम्नलिखित पोस्ट में उल्लिखित आपके नियंत्रक के असेंबली नाम को जोड़ने का प्रयास करें .. Controller sub folder

साथ ही, हमें बताएं कि आप पेज तक पहुंचने के लिए किस यूआरएल टाइप कर रहे हैं।

+0

यह यूआरएल मैं पहुंचने की कोशिश कर रहा हूं: http: // localhost/admin/HomeAdmin/Index – user979331

+0

मैंने आपके कोड की कोशिश की, नई त्रुटि: 'दृश्य' इंडेक्स 'या उसके मास्टर को नहीं मिला या कोई दृश्य इंजन खोजे गए स्थानों का समर्थन नहीं करता है। निम्नलिखित स्थानों की खोज की गई: ' – user979331

+1

यह वास्तव में बढ़िया है !! इसका मतलब है कि आपका यूआरएल अब काम कर रहा है .. अगला मुद्दा हमारे पास एमवीसी को देखने के पथ का पता लगाने में मदद करना है .. यह आपको अपनी खोज की गई पथों की सूची प्रदान करनी होगी। अब हमें यह सुनिश्चित करना होगा कि यह हमारे रास्ते पर विचार कर रहा है। जैसा कि मैंने देखा है कि आपका दृश्य दृश्य/व्यवस्थापक/homeadmin/पर स्थित है। हमें यह सुनिश्चित करने की ज़रूरत है कि एमवीसी को संबंधित पथ –

2

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

+0

"क्षेत्र" से आपका क्या मतलब है? क्या यह वीएस में एक नई अवधारणा है? –

+1

@ कोनराड विल्टरस्टेन हां, यह एमवीसी में अवधारणा है। क्षेत्र बड़े अनुप्रयोगों को छोटे इकाइयों में विभाजित करने की अनुमति देता है जहां प्रत्येक इकाई में अलग एमवीसी फ़ोल्डर संरचना होती है और नियंत्रक के रूटिंग की देखभाल करता है और क्षेत्र के भीतर दृश्यों को प्रतिपादित करता है। – LKC

0

आमतौर पर, जब आप किसी फ़ोल्डर (या उप फ़ोल्डर) में सीधे नियंत्रक (या कोई वर्ग फ़ाइल) जोड़ते हैं, तो विजुअल स्टूडियो उस फ़ोल्डर से मेल खाने के लिए कक्षा फ़ाइल में नामस्थान को संशोधित करेगा। तो, आपके मामले में, आपकी कक्षा में 'myprojectname.controller' नेमस्पेस रखने के बजाय, इसमें 'myprojectname.controller.admin' नामस्थान होगा।

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

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