2012-05-28 14 views
86

मेरे पास दो नियंत्रक हैं, जिन्हें AccountController कहा जाता है। उनमें से एक, इसे Controller A पर कॉल करें, Area में 10 नामक है और दूसरा, इसे Controller B पर कॉल करें, किसी भी Area में नहीं है (मुझे लगता है कि इसका मतलब है कि यह डिफ़ॉल्ट Area में है?)। Controller B में action method है Login कहा जाता है। मैं Controller A में एक action method है, जो इस लाइनकिसी अन्य नियंत्रक में कार्रवाई के लिए रीडायरेक्ट

return RedirectToAction("LogIn", "Account"); 

समस्या है जो मैं एक 404 जब इस लाइन क्योंकि एक प्रयास Controller A में न के बराबर action पर पुन: निर्देशित किया जाता है निष्पादित हो जाता है। मैं में action method पर कॉल करना चाहता हूं। क्या यह संभव है?

+1

संभव डुप्लिकेट http://stackoverflow.com/questions/7892094/mvc-redirect-:

यह इस RedirectToAction अधिभार उपयोग कर रहा है टू-इंडेक्स-से-दूसरे-नियंत्रक) – musefan

उत्तर

173

routeValues पैरामीटर में आप area की आपूर्ति कर सकते हैं। इस प्रयास करें:

return RedirectToAction("LogIn", "Account", new { area = "Admin" }); 

या

return RedirectToAction("LogIn", "Account", new { area = "" }); 

जो क्षेत्र आप के लिए लक्ष्य कर रहे हैं पर निर्भर करता है।

+0

क्या होगा यदि मैं किसी निश्चित क्षेत्र में किसी नियंत्रक की कार्रवाई के लिए किसी भी क्षेत्र में नहीं देखना चाहता हूं जो किसी भी क्षेत्र में नहीं है। एमवीसी 5 की तरह, ऊपर दाईं ओर लॉगऑफ बटन खाता नियंत्रक में है, जो कि किसी भी क्षेत्र में नहीं रहता है। और मैं एक निश्चित क्षेत्र में एक दृश्य से LogOff करना चाहता हूँ ??? –

+1

मेरा दूसरा उदाहरण, 'क्षेत्र = "" ', वह आपके लिए करेगा। –

+0

धन्यवाद आप बहुत अधिक –

17

इस का उपयोग करें:

return RedirectToAction("LogIn", "Account", new { area = "" }); 

यह "वैश्विक" क्षेत्र में Account नियंत्रक में LogIn कार्रवाई पर रीडायरेक्ट करेगा।

protected internal RedirectToRouteResult RedirectToAction(
    string actionName, 
    string controllerName, 
    Object routeValues 
) 

MSDN

[एक और नियंत्रक से सूचकांक करने के लिए MVC पुनर्निर्देशन] (की
संबंधित मुद्दे