दूसरे नियंत्रक में कार्रवाई के लिए पुनर्निर्देशित करें


124

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

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

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


जवाबों:


236

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

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

या

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

आप किस क्षेत्र के आधार पर लक्ष्य कर रहे हैं।


क्या होगा अगर मैं एक निश्चित क्षेत्र में एक नियंत्रक की कार्रवाई के लिए एक दृश्य से जाना चाहता हूं जो किसी भी क्षेत्र में नहीं है। MVC5 की तरह, शीर्ष दाईं ओर LogOff बटन AccountController में है, जो किसी भी क्षेत्र में नहीं है। और मैं एक निश्चित क्षेत्र में एक दृश्य से LogOff करना चाहता हूँ ???
प्रतीक्षित महमूद

1
मेरा दूसरा उदाहरण, area = ""आपके लिए वही करेगा।
रोरी मैक्रों

यह मेरे लिए ASP.NET Core के साथ काम करता है .... जब मैंने नवीनतम संस्करण में अपग्रेड किया तो RedirectToAction टूट गया और मुझे यह खाली स्ट्रिंग के साथ क्षेत्र = "" का उपयोग करने के लिए मिला।
जोनाथन अल्फारो

28

इसे इस्तेमाल करो:

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

यह "वैश्विक" क्षेत्र में नियंत्रक में LogInकार्रवाई के लिए पुनर्निर्देशित करेगा Account

यह इस RedirectToActionअधिभार का उपयोग कर रहा है :

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

MSDN



2

इसे इस्तेमाल करो:

    return this.RedirectToAction<AccountController>(m => m.LogIn());

1
मुझे अवधारणा पसंद है। मैंने हमेशा RedirectToAction के स्ट्रिंग भाग से नफरत की है और सोचा कि यह अधिक होना चाहिए जैसा आपने दर्ज किया है, लेकिन यह # # क्रोध को प्रकट करता है। क्या यह ढांचा नया है तो 4.6.2?
user3071434

@ user3071434 नहीं, आप "Microsoft.Web.Mvc का उपयोग करके" जोड़ने के साथ उपयोग कर सकते हैं। आप स्ट्रिंग भाग से बच सकते हैं और गलत एक्शन टेक्स्ट के कारण रनटाइम पर एक त्रुटि प्राप्त करने के लिए कम कर सकते हैं
हिरेन पटेल

0

उन्हें स्विच करने का प्रयास करें:

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

मैंने इसे आजमाया और यह काम आया।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.