किसी अन्य नियंत्रक से सूचकांक पर पुनर्निर्देशित कैसे करें?


129

मैं Indexकिसी अन्य नियंत्रक से एक दृश्य को पुनर्निर्देशित करने के लिए कुछ रास्ता खोजने की कोशिश कर रहा हूँ ।

public ActionResult Index()
{                
     ApplicationController viewModel = new ApplicationController();
     return RedirectToAction("Index", viewModel);
}

यही मैंने अभी कोशिश की है। अब मुझे जो कोड दिया गया था, ActionLinkउस पेज के लिंक Redirectभी मेरे पास होना चाहिए।

@Html.ActionLink("Bally Applications","../Application")

जवाबों:


272

नियंत्रक नाम भी लेने वाले अधिभार का उपयोग करें ...

return RedirectToAction("Index", "MyController");

तथा

@Html.ActionLink("Link Name","Index", "MyController", null, null)

3
ठीक है यह काम किया। जब मैंने इसे पहले किया था तो मैंने पहले एक टाइपो होने की कोशिश की थी।
cjohnson2136

2
किया कि जल्द ही होगा, लेकिन एक टाइमर मुझे रोक रहा था
cjohnson2136

आह, हमारे लिए एमवीसी के नए शौक बेहद मददगार थे। बस एक अलग नियंत्रक द्वारा प्रस्तुत एक अलग फ़ोल्डर में दूसरे दृश्य को पुनर्निर्देशित करना मेरे द्वारा तब तक हो रहा था जब तक मैं इसे नहीं पढ़ता।
atconway

नियंत्रक के बिना किसी दृश्य को पुनर्निर्देशित कैसे करें? जैसे किShared/Error
डायलन Czenski

28

प्रयत्न:

public ActionResult Index() {
    return RedirectToAction("actionName");
    // or
    return RedirectToAction("actionName", "controllerName");
    // or
    return RedirectToAction("actionName", "controllerName", new {/* routeValues, for example: */ id = 5 });
}

और .cshtmlदेखने में:

@Html.ActionLink("linkText","actionName")

या:

@Html.ActionLink("linkText","actionName","controllerName")

या:

@Html.ActionLink("linkText", "actionName", "controllerName", 
    new { /* routeValues forexample: id = 6 or leave blank or use null */ }, 
    new { /* htmlAttributes forexample: @class = "my-class" or leave blank or use null */ })

nullअंतिम अभिव्यक्ति में उपयोग करने की सूचना अनुशंसित नहीं है, और new {}इसके बजाय रिक्त का उपयोग करना बेहतर हैnull


3
किस कारण से अपने नोटिस के संबंध में, यह बेहतर उपयोग करने के लिए है new {}के बजाय null?
मूसफ़ान

16

आप निम्नलिखित कोड का उपयोग कर सकते हैं:

return RedirectToAction("Index", "Home");

RedirectToAction देखें


मैंने कोशिश की कि यह काम न करे। इसने मुझे पृष्ठ दिया कि त्रुटि नहीं मिली
cjohnson2136

"नियंत्रक" के साथ होना चाहिए: return RedirectToAction("Index", "Home");
हीराथ

मुझे "/ इंडेक्स" का उपयोग करने की आवश्यकता है अन्यथा नहीं मिला
कोड

@ कोड 4j आपने अपने डिफ़ॉल्ट मार्गों को कैसे परिभाषित किया है? क्या आपने नियंत्रक और कार्रवाई के लिए डिफ़ॉल्ट मान जोड़े हैं?
राउटर डी कोर्ट

2

आप अधिभार विधि का उपयोग कर सकते हैं RedirectToAction(string actionName, string controllerName);

उदाहरण:

RedirectToAction(nameof(HomeController.Index), "Home");

1

आप स्थानीय पुनर्निर्देशन का उपयोग कर सकते हैं। निम्नलिखित कोड होमकंट्रोलर के सूचकांक पृष्ठ को कूद रहे हैं:

public class SharedController : Controller
    {
        // GET: /<controller>/
        public IActionResult _Layout(string btnLogout)
        {
            if (btnLogout != null)
            {
                return LocalRedirect("~/Index");
            }

            return View();
        }
}

0

पूरा जवाब (.Net कोर 3.1)

यहां अधिकांश उत्तर सही हैं, लेकिन संदर्भ से थोड़ा हटकर हैं, इसलिए मैं एक पूर्ण उत्तर प्रदान करूंगा जो Asp.Net Core 3.1 के लिए काम करता है। पूर्णता के लिए:

[Route("health")]
[ApiController]
public class HealthController : Controller
{
    [HttpGet("some_health_url")]
    public ActionResult SomeHealthMethod() {}
}

[Route("v2")]
[ApiController]
public class V2Controller : Controller
{
    [HttpGet("some_url")]
    public ActionResult SomeV2Method()
    {
        return RedirectToAction("SomeHealthMethod", "Health"); // omit "Controller"
    }
}

यदि आप किसी भी url- विशिष्ट स्ट्रिंग्स का उपयोग करने का प्रयास करते हैं, उदाहरण के लिए "some_health_url", यह काम नहीं करेगा!

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