2011-09-21 24 views
12

में "मार्ग तालिका में कोई मार्ग आपूर्ति किए गए मान से मेल खाता है" मैं एक परियोजना है कि मैं हाल ही में ASP.NET MVC 3. करने के लिए उन्नत अपने स्थानीय मशीन पर, सब कुछ ठीक काम करता है। जब मैं सर्वर पर तैनात करता हूं, तो जब भी मैं RedirectToAction कॉल का उपयोग करता हूं तो मुझे कोई त्रुटि मिलती है। यह त्रुटि संदेश त्रुटि संदेश के साथ System.InvalidOperationException फेंकता है मार्ग तालिका में कोई भी मार्ग आपूर्ति मूल्यों से मेल खाता है। मेरी धारणा यह है कि सर्वर पर कुछ कॉन्फ़िगरेशन समस्या है, लेकिन मुझे लगता है कि मैं इसे समझने में सक्षम नहीं हूं।RedirectToAction कारण ASP.NET MVC 3

+1

इसका मतलब है कि आप अपने मार्ग तालिका में किसी भी मार्ग से मेल नहीं खाता को 'global.asax' फ़ाइल में अपने मार्ग तालिका जाँच अनुप्रेषित। मैं आप पैरामीटर जोड़ सकते हैं जो मार्गों में घोषित नहीं किए जाते हैं –

+0

कृपया 'RedirectToAction' के बारे में अधिक जानकारी प्रदान करें जो असफल हो रहा है। इसके अलावा, कृपया मार्ग प्रदान करें। – counsellorben

उत्तर

3

मैं RedirectToAction के साथ एक बार एक ऐसी ही समस्या थी और पता चला आप की जरूरत है कि एक वैध मार्ग पंजीकृत उस कार्य होता है।

+4

यह मार्गों के साथ कुछ बन गया। यह एमवीसी 2 में ठीक काम करता था लेकिन मुझे एमवीसी 3 के साथ काम करने के लिए एक कम वैकल्पिक पैरामीटर के साथ एक अतिरिक्त मार्ग जोड़ना पड़ा। – Schmalls

2

झलक चेक बाहर और आप कुछ मार्ग डिबगिंग जानकारी प्राप्त कर सकते हैं देखें: http://getglimpse.com/

0

वहाँ मार्गों में ट्रेलिंग स्लैश MVC 3.0 के साथ काम नहीं कर के साथ एक अंतर है। एमवीसी 2.0 में उनके साथ कोई समस्या नहीं है। अर्थात, और यदि आप निम्न बदलने के लिए:

"{controller}.mvc/{action}/{id}/" 

रहे हैं:

"{controller}.mvc/{action}/{id}" 

यह (this thread से, मेरे लिए काम किया) इसे ठीक करना चाहिए। यहां तक ​​कि जब आप एमवीसी 3.0 पर जाने के लिए अपग्रेड विज़ार्ड का उपयोग करते हैं, तब भी यह InvalidOperationException फेंकता है। मुझे पता नहीं है कि यह Schmalls हालांकि बात कर रहा था।

18

मैं जब क्षेत्रों में पुनः निर्देशित MVC3 के भीतर क्षेत्रों के साथ इस में भाग गया। जैसा कि अन्य ने कहा है, झलक यहां बहुत उपयोगी है।

मेरे लिए समाधान मार्ग के भीतर क्षेत्र में पारित किया गया था महत्व देता पैरामीटर बदलते:

return RedirectToAction("ActionName", "ControllerName"); 

रहे हैं:

return RedirectToAction("ActionName", "ControllerName", new { area = "AreaName" }); 
+0

यह असली जवाब है ... मैं AttributeRouting का उपयोग करके इस समस्या में भाग गया, और भले ही यह क्षेत्र के नाम को निर्दिष्ट किए बिना अन्य पृष्ठों पर काम करता है, मुझे इस विशेष क्षेत्र के लिए ऐसा करना पड़ा। – jspinella

0

करने के लिए अपने RouteConfig.cs की तरह फ़ाइल आप एक मार्ग तालिका जोड़ सकता है नीचे:

public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapMvcAttributeRoutes(); 

     var namespaces = new[] { typeof(HomeController).Namespace }; 

     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute("name", "url", new { controller = "controllerName", action = "actionName" }, namespaces); 
    } 

एनबी: "url" वह है जिसे आप पता बार में टाइप करेंगे: localhost:/home

मार्ग स्थापित करने के बाद, RedirectToRoute("url") का उपयोग करें।

या यदि आप RedirectToAction() तो पसंद करते हैं आप ऊपर मार्ग स्थापित करने के लिए की जरूरत नहीं है, चूक का उपयोग करें। RedirectToAction(string action name, string controller name);

मुझे उम्मीद है कि इससे मदद मिलती है।

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