Asp.net MVC 4 और MVC 5 में डिफ़ॉल्ट नियंत्रक कैसे सेट करें


106

मैं अपने ASP.NET MVC 4 प्रोजेक्ट के लिए डिफॉल्ट कंट्रोलर को होमकंट्रोलर के बिना कैसे सेट करूँ ?

एप्लिकेशन शुरू होने पर मुझे डिफ़ॉल्ट क्षेत्र कैसे सेट करना चाहिए ?


जैसा कि "/" से "/ होम" रूट पेज के रूप में बदल रहा होगा; यह "/ होम" ग्राहक के ब्राउज़र पर दिखाई देगा।
आंद्रे मेस्किटा

जवाबों:


165

सबसे अच्छा तरीका है अपने मार्ग को बदलना। डिफ़ॉल्ट मार्ग (आपके App_Start में परिभाषित) सेट करता है/Home/Index

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);

डिफ़ॉल्ट लैंडिंग पृष्ठ के रूप में। आप अपनी इच्छानुसार किसी भी मार्ग को बदल सकते हैं।

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);

13
MVC 4 में डिफ़ॉल्ट मार्ग App_Start / RouteConfig.cs में सेट है
एरिक लाबाबॉस्की

सच सच। मैं दोनों में परियोजनाओं पर काम कर रहा हूँ और इन चीजों को नजरअंदाज कर रहा हूँ;)
डेव अल्परोविच

1
डेव सही है, लेकिन मैं यह जोड़ना चाहूंगा कि एमवीसी 4 में रूटिंग अब Global.asax में नहीं किया जाता है, बल्कि App_Start के तहत रूटकॉन्फ़िग.क्स में किया जाता है
अच्छा सामरी

2
उस काम को कैसे करें जब डिफ़ॉल्ट मार्ग में संदर्भित नियंत्रक दूसरे क्षेत्र में बैठता है (यानी रूट एक नहीं)?
सुपरजोस

आपको डिफ़ॉल्ट मार्ग को बनाने में सक्षम होना चाहिए"AreaName/{controller}/{action}/{id}"
डेव अल्परोविच

30

App_Start फ़ोल्डर में RouteConfig.cs में नीचे दिए गए कोड को सेट करें

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional });
}

यदि फिर भी काम नहीं कर रहा है तो नीचे दिए गए चरणों को करें

दूसरा तरीका: आप सरल चरणों का पालन करें,

1) अपने प्रोजेक्ट पर राइट क्लिक करें

2) गुणों का चयन करें

3) वेब विकल्प चुनें और फिर विशिष्ट पृष्ठ (नियंत्रक / दृश्य) का चयन करें और फिर अपना लॉगिन पृष्ठ सेट करें

यहाँ, खाता मेरा नियंत्रक है और लॉगिन मेरी क्रिया विधि (खाता नियंत्रक में सहेजी गई) है

कृपया संलग्न यहां छवि विवरण दर्ज करेंस्क्रीनशॉट देखें।


15
आपका "दूसरा तरीका" तब होता है जब आप अपने वेब प्रोजेक्ट को डीबग करते हैं। इसका "डिफ़ॉल्ट नियंत्रक" से कोई लेना-देना नहीं है, यानी जब आप अपनी साइट के लैंडिंग पृष्ठ पर जाते हैं तो कौन सा पृष्ठ दिखाया जाता है।
मार्टिन लीवरेज सेप

25

मैंने इस सवाल का जवाब नहीं देखा:

एप्लिकेशन शुरू होने पर मुझे डिफ़ॉल्ट क्षेत्र कैसे सेट करना चाहिए ?

तो, यहां बताया गया है कि आप एक डिफ़ॉल्ट क्षेत्र कैसे सेट कर सकते हैं:

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

1
महान सवाल, आप इसे एक के रूप में क्यों नहीं बनाते हैं?
स्टुअर्टडॉटनेट

'क्षेत्र' क्या है? यदि मैं एक दृश्य को परिभाषित करता हूं, तो संदर्भित लेआउट लोड किया गया है, और फिर मेरे विचार डेटा के साथ एक अलग HTTP अनुरोध है? (यानी अलग अजाक्स ऑपरेशन) या लेआउट मेरे विचार के आसपास प्रदान और लपेटा गया है?
गूस क्रॉफोर्ड 18

2
@GusCrawford 'क्षेत्र' क्या है? से msdn.microsoft.com/en-us/library/ee671793(VS.100).aspx : बड़ी परियोजनाओं को समायोजित करने के लिए, ASP.NET MVC छोटी इकाइयों कि क्षेत्रों के रूप में भेजा में आप विभाजन वेब अनुप्रयोगों की सुविधा देता है। क्षेत्र एक बड़े MVC वेब अनुप्रयोग को छोटे कार्यात्मक समूहों में अलग करने का एक तरीका प्रदान करते हैं। एक क्षेत्र एक आवेदन के अंदर प्रभावी रूप से एक एमवीसी संरचना है। एक आवेदन में कई MVC संरचनाएं (क्षेत्र) हो सकती हैं।
आमना अली

अन्य प्रश्न के लिए, मुझे नहीं लगता कि यह इस उत्तर से संबंधित है, और यह मूल प्रश्न के लिए भी प्रासंगिक नहीं लगता है। हो सकता है, आप इसे कहीं और पोस्ट करें।
आमना अली

बीमार परिप्रेक्ष्य के लिए एक नया धागा उत्तर धन्यवाद में अलग से पूछें।
गस क्रॉफोर्ड 19

2

यदि आपके पास केवल एक नियंत्रक है और आप रूट पर हर क्रिया को एक्सेस करना चाहते हैं तो आप नियंत्रक नाम को इस तरह छोड़ सकते हैं

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.