2009-04-30 17 views
7

के साथ ASP.NET प्रोजेक्ट में Default.aspx निष्पादित नहीं हो रहा है मेरा ऐप मुख्य रूप से एक एएसपी.NET ऐप है जिसे मैं इसमें एक एमवीसी अनुभाग जोड़ रहा हूं।एमएससी अनुभाग

मेरा डिफ़ॉल्ट.एएसपीएक्स (कोई कोडबेइंड) पृष्ठ का एक साधारण प्रतिक्रिया नहीं है। StartPage.aspx पृष्ठ पर रीडायरेक्ट है, लेकिन किसी कारण से एमवीसी खत्म हो रहा है और मैं StartPage.aspx पृष्ठ पर नहीं जा रहा हूं। इसके बजाय मैं अपने पहले और केवल एमवीसी अनुभाग में जाता हूं जो एक पंजीकृत मार्ग है जिसे मैंने global.asax.cs पृष्ठ (एल्बम) में पंजीकृत किया है।

क्या एमवीसी को रूट के लिए मेरे अनुरोध छोड़ने का तरीका है "/" ​​मेरे आईआईएस 7 डिफ़ॉल्ट दस्तावेज़ होने के लिए ... इस मामले में Default.aspx?

यह वही मेरी RegisterRoutes में है:,

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Albums","{controller}/{action}/{id}", 
    new { controller = "Albums", action = "Index", id = "" }); 
+0

आप MVC तोड़ने के लिए करना चाहते हैं कर रहे हैं (मॉडल डिफ़ॉल्ट मार्ग से पहले इस जोड़ सकते हैं ताकि -व्यू-नियंत्रक) नियम? मुझे लगता है कि प्रत्येक दृश्य दृश्य फ़ोल्डर के तहत निहित होना चाहिए। –

+1

यह एक क्लासिक asp.net ऐप है। मुझे लगता है कि मैं इसे अब एक विरासत ऐप कह सकता हूं ;-) तो सब कुछ वही रहता है। मैं बस एमवीसी जोड़ने शुरू कर रहा हूं और डिफ़ॉल्ट पृष्ठ उनमें से एक नहीं है। – Mouffette

उत्तर

7

तुम वहाँ अपने दूसरे मार्ग से डिफ़ॉल्ट नियंत्रक निकाल देते हैं तो यह "/" के खिलाफ अब और मेल नहीं खाएगी और रूटिंग के लिए अनुरोध पर ध्यान नहीं देगा "/" , उन्हें हमेशा की ASP.Net पाइप लाइन के लिए रवाना होने

को संभालने के लिए तो, करने के लिए अपने मार्गों को बदलें:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
routes.MapRoute("Albums","{controller}/{action}/{id}", 
    new { action = "Index", id = "" }); 

कि आपकी समस्या का समाधान करना चाहिए!

+0

आपका सुझाव काम करता है लेकिन मुझे आश्चर्य है कि क्या डिफ़ॉल्ट रूप से अल्कोन्जा के उदाहरणों को अनदेखा करना बेहतर है? भविष्य में जब मैं अधिक एमवीसी मार्ग बनाता हूं तो मैं एक डिफ़ॉल्ट नियंत्रक निर्दिष्ट नहीं कर पाऊंगा या क्या मैं गलत समझ रहा हूं कि {नियंत्रक} का अर्थ क्या है? मुझे लगा कि यह "एल्बम" के लिए विशिष्ट था लेकिन मुझे यकीन नहीं है। धन्यवाद। – Mouffette

+0

मुझे यकीन नहीं है कि क्या अल्कोन्जा का समाधान वास्तव में "/" मामले में काम करेगा। चूंकि आने वाला यूआरएल "/Default.aspx" के बजाय "/" है। यह इस पर निर्भर करता है कि जब डिफ़ॉल्ट दस्तावेज़ लागू होता है। एक डिफ़ॉल्ट नियंत्रक मान निर्दिष्ट करने का एकमात्र कारण यह है कि "/" को उस नियंत्रक को रूट करने के लिए अनुरोध किया जाता है, लेकिन यदि आप अपना डिफ़ॉल्ट .aspx पृष्ठ "/" अनुरोधों को संभालने के लिए चाहते हैं, तो आपके पास डिफ़ॉल्ट नियंत्रक नहीं होना चाहिए –

0

आप इस तरह Default.aspx अनदेखी करने के लिए MVC बता सकते हैं:

routes.IgnoreRoute("Default.aspx"); 
1

default.aspx पेज आईआईएस द्वारा कार्य किया जा रहा है, क्योंकि यह डिफ़ॉल्ट दस्तावेज़ है। एमवीसी डिफ़ॉल्ट.एएसपीएक्स पृष्ठ को अनुरोध को संभालने दें, अगर यह एहसास हुआ कि अनुरोध डिफ़ॉल्ट.aspx (उदा। "Http://foo.com/default.aspx") के लिए था। यह relize नहीं करता, हालांकि इस परिदृश्य ("http://foo.com") में आप को प्राप्त करने के लिए आप क्या करने के बाद

// ignore "/"  
routes.IgnoreRoute(""); 

// default route 
routes.MapRoute(
       "Default", // Route name 
       "{controller}/{action}/{id}", // URL with parameters 
       new { controller = "Home", action = "Index", 
         id = UrlParameter.Optional } // Parameter defaults 
      ); 
संबंधित मुद्दे